#ifndef __ardour_vst_types_h__
#define __ardour_vst_types_h__
+#include <pthread.h>
+#include "ardour/libardour_visibility.h"
#include "ardour/vestige/aeffectx.h"
-struct _VSTKey
+struct LIBARDOUR_API _VSTKey
{
/** virtual-key code, or 0 if this _VSTFXKey is a `character' key */
int special;
typedef struct _VSTKey VSTKey;
-struct _VSTInfo
+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 canProcessReplacing;
-
+
char** ParamNames;
char** ParamLabels;
};
typedef AEffect * (* main_entry_t) (audioMasterCallback);
-struct _VSTHandle
+struct LIBARDOUR_API _VSTHandle
{
void* dll;
char* name;
- char* nameptr;
-
+ char* path;
+
main_entry_t main_entry;
int plugincnt;
typedef struct _VSTHandle VSTHandle;
+struct LIBARDOUR_API _VSTState
+{
+ AEffect* plugin;
+
+ /* Linux */
+ 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
+
+ /* Windows */
+ void* windows_window;
+
+ int xid; ///< X11 XWindow
+
+ int want_resize; ///< Set to signal the plugin resized its UI
+ void* extra_data; ///< Pointer to any extra data
+
+ void * event_callback_thisptr;
+ void (* eventProc) (void * event);
+
+ VSTHandle* handle;
+
+ 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_cond_t window_status_change;
+ pthread_cond_t plugin_dispatcher_called;
+ pthread_cond_t window_created;
+ int been_activated;
+};
+
+typedef struct _VSTState VSTState;
+
#endif