X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginlv2ui.h;h=2e5f7932e70f019c6ac16766d45139d596ff458b;hb=5ac2037d8e5ab71a1915389cd08b458cfb60d64f;hp=75fe8262972c3928361f0f8c990f902add3b89dd;hpb=803cf48f8f7ee246eb5473e55fc2125e8b398250;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/pluginlv2ui.h b/cinelerra-5.1/cinelerra/pluginlv2ui.h index 75fe8262..2e5f7932 100644 --- a/cinelerra-5.1/cinelerra/pluginlv2ui.h +++ b/cinelerra-5.1/cinelerra/pluginlv2ui.h @@ -22,16 +22,40 @@ #ifndef __PLUGINLV2UI_H__ #define __PLUGINLV2UI_H__ -#ifdef HAVE_LV2UI - #include "forkbase.h" #include "pluginlv2.h" #include "pluginlv2client.h" #include "pluginlv2gui.inc" #include "pluginlv2ui.inc" +//=== lv2_external_ui.h +#define LV2_EXTERNAL_UI_URI "http://lv2plug.in/ns/extensions/ui#external" +#define LV2_EXTERNAL_UI_URI__KX__Host "http://kxstudio.sf.net/ns/lv2ext/external-ui#Host" + +typedef struct _lv2_external_ui lv2_external_ui; +struct _lv2_external_ui { + void (*run)(lv2_external_ui *ui); + void (*show)(lv2_external_ui *ui); + void (*hide)(lv2_external_ui *ui); + void *self; +}; + +typedef struct _lv2_external_ui_host lv2_external_ui_host; +struct _lv2_external_ui_host { + void (*ui_closed)(void* controller); + const char *plugin_human_id; +}; + +#define LV2_EXTERNAL_UI_RUN(ptr) (ptr)->run(ptr) +#define LV2_EXTERNAL_UI_SHOW(ptr) (ptr)->show(ptr) +#define LV2_EXTERNAL_UI_HIDE(ptr) (ptr)->hide(ptr) +//=== + typedef struct _GtkWidget GtkWidget; +#define UPDATE_HOST 1 +#define UPDATE_PORTS 2 + class PluginLV2UI : public PluginLV2 { public: @@ -42,26 +66,24 @@ public: const LilvNode *lilv_type; LV2_Extension_Data_Feature *ext_data; - PluginLV2UriTable uri_table; - LV2_URI_Map_Feature *uri_map; - LV2_URID_Map map; - LV2_URID_Unmap unmap; + lv2_external_ui_host extui_host; + const char *wgt_type; + const char *gtk_type; + const char *ui_type; char title[BCSTRLEN]; PluginLV2ClientConfig config; - uint32_t host_updates, updates; - int host_hidden, hidden; int done, running; - const char *gtk_type; - GtkWidget *top_level; + int hidden, updates; - void reset_gui(); - int init_ui(const char *path, int sample_rate); void start(); void stop(); - int update_lv2(float *vals, int force); - int redraw; + int update_lv2_input(float *vals, int force); + void update_lv2_output(); + virtual int send_host(int64_t token, const void *data, int bytes) = 0; + virtual int child_iteration(int64_t usec) { return -1; } + void run_lilv(int samples); void update_value(int idx, uint32_t bfrsz, uint32_t typ, const void *bfr); void update_control(int idx, uint32_t bfrsz, uint32_t typ, const void *bfr); static void write_from_ui(void *the, uint32_t idx, @@ -74,11 +96,42 @@ public: static const char *uri_table_unmap(LV2_URID_Map_Handle handle, LV2_URID urid); void lv2ui_instantiate(void *parent); bool lv2ui_resizable(); + void update_host(); +}; + +class PluginLV2GUI +{ +public: + PluginLV2GUI(PluginLV2ChildUI *child_ui); + virtual ~PluginLV2GUI(); + virtual void reset_gui() = 0; + virtual void start_gui() = 0; + virtual int handle_child() = 0; + + PluginLV2ChildUI *child_ui; + void *top_level; +}; + +class PluginLV2ChildGtkUI : public PluginLV2GUI +{ +public: + PluginLV2ChildGtkUI(PluginLV2ChildUI *child_ui); + ~PluginLV2ChildGtkUI(); + + void reset_gui(); void start_gui(); - int run_ui(PluginLV2ChildUI *child=0); - void run_buffer(int shmid); - void host_update(PluginLV2ChildUI *child); - int run(int ac, char **av); + int handle_child(); +}; + +class PluginLV2ChildWgtUI : public PluginLV2GUI +{ +public: + PluginLV2ChildWgtUI(PluginLV2ChildUI *child_ui); + ~PluginLV2ChildWgtUI(); + + void reset_gui(); + void start_gui(); + int handle_child(); }; class PluginLV2ChildUI : public ForkChild, public PluginLV2UI @@ -86,10 +139,23 @@ class PluginLV2ChildUI : public ForkChild, public PluginLV2UI public: PluginLV2ChildUI(); ~PluginLV2ChildUI(); - void run(); + int init_ui(const char *path, int sample_rate, int bfrsz); + void reset_gui(); + void start_gui(); int handle_child(); + + int is_forked() { return ppid; } + int send_host(int64_t token, const void *data, int bytes); + int child_iteration(int64_t usec); + void run(); int run(int ac, char **av); + int run_ui(); + void run_buffer(int shmid); + + int ac; + char **av; + PluginLV2GUI *gui; }; -#endif + #endif