~PluginObj() { if( dlobj ) unload(dlobj); }
};
+class PluginGUIs : public ArrayList<PluginServer*>
+{
+ MWindow *mwindow;
+public:
+ PluginGUIs(MWindow *mwindow);
+ ~PluginGUIs();
+
+ void append(PluginServer *server);
+ PluginServer *gui_server(int gui_id);
+};
+
class PluginServer
{
PluginObj *plugin_obj;
KeyFrame* get_keyframe();
// Apply new settings from the plugin GUI. Called by PluginClient::send_configure_change
// Used in keyframe spanning mode.
- void apply_keyframe(KeyFrame *src);
+ void apply_keyframe(Plugin *plugin, KeyFrame *src);
// Create new theme object. Used by theme plugins.
Theme* new_theme();
void set_use_opengl(int value, VideoDevice *vdevice);
// Plugin must call this before performing OpenGL operations.
int get_use_opengl();
+ int to_ram(VFrame *vframe);
// Called from plugin client
// Returns 1 if a GUI is open so OpenGL routines can determine if
// 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;