*/
void fst_set_error_function (void (*func)(const char *));
-#include <vst/AEffect.h>
+void fst_error (const char *fmt, ...);
+
+#define VESTIGE_HEADER
+
+#ifdef VESTIGE_HEADER
+#include <vestige/aeffectx.h>
+#endif
typedef struct _FST FST;
typedef struct _FSTHandle FSTHandle;
typedef struct _FSTInfo FSTInfo;
+typedef struct _FSTKey FSTKey;
struct _FSTInfo
{
char *name;
+ char *creator;
int UniqueID;
char *Category;
char **ParamLabels;
};
+typedef struct AEffect * (*main_entry_t)(audioMasterCallback);
+
struct _FSTHandle
{
void* dll;
char* name;
char* nameptr; /* ptr returned from strdup() etc. */
- AEffect* (*main_entry)(audioMasterCallback);
+ //struct AEffect* (*main_entry)(audioMasterCallback);
+ main_entry_t main_entry;
int plugincnt;
};
+struct _FSTKey
+{
+ /** virtual-key code, or 0 if this _FSTKey is a `character' key */
+ int special;
+ /** `character' key, or 0 if this _FSTKey is a virtual-key */
+ int character;
+};
+
struct _FST
{
- AEffect* plugin;
+ struct AEffect* plugin;
void* window; /* win32 HWND */
int xid; /* X11 XWindow */
FSTHandle* handle;
int width;
int height;
+ int wantIdle;
int destroy;
+ int vst_version;
+ int has_editor;
+
+ int program_set_without_editor;
+ int want_program;
+ int want_chunk;
+ unsigned char *wanted_chunk;
+ int wanted_chunk_size;
+ int current_program;
+ float *want_params;
+ float *set_params;
+
+ FSTKey pending_keys[16];
+ int n_pending_keys;
+
+ int dispatcher_wantcall;
+ int dispatcher_opcode;
+ int dispatcher_index;
+ int dispatcher_val;
+ void * dispatcher_ptr;
+ float dispatcher_opt;
+ int dispatcher_retval;
struct _FST* next;
-
pthread_mutex_t lock;
pthread_cond_t window_status_change;
+ pthread_cond_t plugin_dispatcher_called;
int been_activated;
};
extern "C" {
#endif
-extern int fst_init (void (*sighandler)(int,siginfo_t*,void*));
+extern int fst_init (void* possible_hmodule);
+extern void fst_exit ();
extern FSTHandle* fst_load (const char*);
extern int fst_unload (FSTHandle*);
extern FST* fst_instantiate (FSTHandle*, audioMasterCallback amc, void* userptr);
extern void fst_close (FST*);
-extern void fst_event_loop_remove_plugin (FST* fst);
-extern void fst_event_loop_add_plugin (FST* fst);
-
+extern int fst_create_editor (FST* fst);
extern int fst_run_editor (FST*);
extern void fst_destroy_editor (FST*);
extern int fst_get_XID (FST*);
+extern void fst_move_window_into_view (FST*);
+
+extern FSTInfo *fst_get_info (char *dllpathname);
+extern void fst_free_info (FSTInfo *info);
+extern void fst_event_loop_remove_plugin (FST* fst);
+extern int fst_call_dispatcher(FST *fst, int opcode, int index, int val, void *ptr, float opt );
+
+/**
+ * Load a plugin state from a file.
+ */
+extern int fst_load_state (FST * fst, char * filename);
-extern int fst_adopt_thread ();
-extern void* fst_get_teb();
+/**
+ * Save a plugin state to a file.
+ */
+extern int fst_save_state (FST * fst, char * filename);
-extern void fst_signal_handler (int sig, siginfo_t* info, void* context);
+extern int wine_pthread_create (pthread_t* thread_id, const pthread_attr_t* attr, void *(*function)(void*), void* arg);
-extern FSTInfo *fst_get_info( char *dllpathname );
-extern void fst_free_info( FSTInfo *info );
#ifdef __cplusplus
}