X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fpluginserver.h;h=03e9d924198d5dbca7823e4ec8e541f2f3b6f7e1;hb=7150970246a9935d304b1f094c209f69cfd7adb3;hp=e174ebaa9ae24e464cbc009c16a72de9374421da;hpb=a3a59f63fdfbcf94c561595f515951fdfd4bea30;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/pluginserver.h b/cinelerra-5.0/cinelerra/pluginserver.h index e174ebaa..03e9d924 100644 --- a/cinelerra-5.0/cinelerra/pluginserver.h +++ b/cinelerra-5.0/cinelerra/pluginserver.h @@ -35,6 +35,7 @@ #include "edl.inc" #include "floatauto.inc" #include "floatautos.inc" +#include "garbage.h" #include "keyframe.inc" #include "ladspa.h" #include "mainprogress.inc" @@ -58,19 +59,31 @@ #include -class PluginServer -{ - int reset_parameters(); - void init(); - int cleanup_plugin(); - +class PluginObj : public Garbage { void *dlobj; +public: + void *load(const char *dlp) { return dlobj = dlopen(dlp, RTLD_NOW); } + void *load(const char *plugin_dir, const char *path); void unload(void *obj) { dlclose(obj); } void *load_sym(const char *sym) { return dlsym(dlobj, sym); } const char *load_error() { return dlerror(); } - void *load_obj(); - void unload_obj(); + void *obj() { return dlobj; } + + PluginObj() : Garbage("PluginObj:Garbage") { dlobj = 0; } + ~PluginObj() { if( dlobj ) unload(dlobj); } +}; + +class PluginServer +{ + PluginObj *plugin_obj; + int load_obj(); + const char *load_error(); + void *get_sym(const char *sym); + + int reset_parameters(); + void init(); + int cleanup_plugin(); // Base class created by client PluginClient *client; @@ -112,14 +125,15 @@ public: EDL *edl, Plugin *plugin); // close the plugin int close_plugin(); - void delete_this(); - char *get_plugin_png_path(char *png_path); + int get_theme_png_path(char *png_path, const char *theme_dir); + int get_theme_png_path(char *png_path, Theme *theme); + int get_plugin_png_path(char *png_path); void dump(FILE *fp=stdout); // Release any objects which are required after playback stops. void render_stop(); // Write entry into plugin table - void write_table(FILE *fp, int idx); - static int scan_table(char *text, int &type, char *path, char *title); + void write_table(FILE *fp, const char *path, int idx, int64_t mtime); + static int scan_table(char *text, int &type, char *path, char *title, int64_t &mtime); int read_table(char *text); // queries void set_title(const char *string);