~PluginObj() { if( dlobj ) unload(dlobj); }
};
+class PluginGUIs : public ArrayList<PluginServer*>
+{
+ int next_id;
+ MWindow *mwindow;
+public:
+ PluginGUIs(MWindow *mwindow);
+ ~PluginGUIs();
+
+ void append(PluginServer *server);
+ PluginServer *gui_server(int gui_id);
+};
+
class PluginServer
{
PluginObj *plugin_obj;
int64_t position, int direction);
// Get interpolation used by EDL
int get_interpolation_type();
+// plugin position or -1 if no plugin
+ int64_t get_startproject();
+ int64_t get_endproject();
// Get or create keyframe for writing, depending on whether auto keyframes
// is enabled. Called by PluginClient::send_configure_change
KeyFrame* get_keyframe();
// Called by rendering client to cause the GUI to display something with the data.
void send_render_gui(void *data);
void send_render_gui(void *data, int size);
+
// Called by MWindow to cause GUI to display
void render_gui(void *data);
void render_gui(void *data, int size);
+// PluginClientFrames queuing to gui client_frames
+ void send_reset_gui_frames();
+ void reset_gui_frames();
+ void render_gui_frames(PluginClientFrames *frames);
+ void reset_plugin_gui_frames();
+ void render_plugin_gui_frames(PluginClientFrames *frames);
// Send the boundary autos of the next fragment
int set_automation(FloatAutos *autos, FloatAuto **start_auto, FloatAuto **end_auto, int reverse);
// client origin
int plugin_type;
+ int plugin_id;
// buffers
int64_t out_buffer_size; // size of a send buffer to the plugin
// Pointer to keyframe when plugin is not available
KeyFrame *keyframe;
AttachmentPoint *attachment;
-// Storage of keyframes and GUI status
- Plugin *plugin;
// Storage of session parameters
EDL *edl;
Preferences *preferences;
MenuEffectPrompt *prompt;
- int gui_on;
+ int gui_on, gui_id;
VFrame *temp_frame;