Optimize automation-event process splitting
[ardour.git] / libs / ardour / ardour / vst_types.h
index 35b52435ab96612a45404eec353fdce2ad7a8be0..7bce34f05a22c0129d7461165215050314065cc0 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <pthread.h>
 #include "ardour/libardour_visibility.h"
-#include "ardour/vestige/aeffectx.h"
+#include "ardour/vestige/vestige.h"
 
 struct LIBARDOUR_API _VSTKey
 {
@@ -34,22 +34,23 @@ struct LIBARDOUR_API _VSTKey
 
 typedef struct _VSTKey VSTKey;
 
-struct LIBARDOUR_API _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    isInstrument; // still unused
        int    canProcessReplacing;
-       
+
        char** ParamNames;
        char** ParamLabels;
 };
@@ -63,34 +64,34 @@ 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;
+       AEffect*    plugin;
+       VSTHandle*  handle;
+       audioMasterCallback amc;
 
-       /* Linux */
+       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         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;
@@ -102,35 +103,44 @@ struct LIBARDOUR_API _VSTState
        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;
+
+       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
+
 #endif