+struct LIBARDOUR_API _VSTInfo
+{
+ char *name;
+ char *creator;
+ int UniqueID;
+ char *Category;
+
+ int numInputs;
+ int numOutputs;
+ int numParams;
+
+ int wantMidi;
+ int wantEvents;
+ int hasEditor;
+ int isInstrument; // still unused
+ int canProcessReplacing;
+
+ char** ParamNames;
+ char** ParamLabels;
+};
+
+typedef struct _VSTInfo VSTInfo;
+
+typedef AEffect * (* main_entry_t) (audioMasterCallback);
+
+struct LIBARDOUR_API _VSTHandle
+{
+ void* dll;
+ char* name;
+ char* path;
+
+ main_entry_t main_entry;
+
+ int plugincnt;
+#ifdef MACVST_SUPPORT
+ int32_t res_file_id;
+#endif
+};
+
+typedef struct _VSTHandle VSTHandle;
+
+struct LIBARDOUR_API _VSTState
+{
+ AEffect* plugin;
+ VSTHandle* handle;
+ audioMasterCallback amc;
+
+ void* gtk_window_parent;
+ int xid; ///< X11 XWindow (wine + lxvst)
+
+ /* LXVST/X11 */
+ int linux_window; ///< The plugin's parent X11 XWindow
+ int linux_plugin_ui_window; ///< The ID of the plugin UI window created by the plugin
+ void (* eventProc) (void * event); ///< X11 UI _XEventProc
+
+ /* Windows */
+ void* windows_window;
+
+
+ int width;
+ int height;
+ int wantIdle;
+
+ int voffset;
+ int hoffset;
+ int gui_shown;
+ int destroy;
+ int vst_version;
+ int has_editor;
+
+ int program_set_without_editor;
+ int want_program;
+ int want_chunk;
+ int n_pending_keys;
+ unsigned char* wanted_chunk;
+ int wanted_chunk_size;
+ float* want_params;
+ float* set_params;
+
+ VSTKey pending_keys[16];
+
+ int dispatcher_wantcall;
+ int dispatcher_opcode;
+ int dispatcher_index;
+ int dispatcher_val;
+ void* dispatcher_ptr;
+ float dispatcher_opt;
+ int dispatcher_retval;
+
+ struct _VSTState* next;
+ pthread_mutex_t lock;
+ pthread_mutex_t state_lock;
+ pthread_cond_t window_status_change;
+ pthread_cond_t plugin_dispatcher_called;
+ pthread_cond_t window_created;
+ int been_activated;
+};
+
+typedef struct _VSTState VSTState;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+LIBARDOUR_API extern void vststate_init (VSTState* state);
+LIBARDOUR_API extern void vststate_maybe_set_program (VSTState* state);
+#ifdef __cplusplus
+}
+#endif
+