X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginclient.C;h=0e0637b734036cdf06c47459f60b524b8cc1d9c8;hb=7be8c7f90868895abddcbafda66ede5632752a70;hp=64c7d53f6649d64ef1e0131d59e688d764c15fc5;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/pluginclient.C b/cinelerra-5.1/cinelerra/pluginclient.C index 64c7d53f..0e0637b7 100644 --- a/cinelerra-5.1/cinelerra/pluginclient.C +++ b/cinelerra-5.1/cinelerra/pluginclient.C @@ -26,6 +26,7 @@ #include "condition.h" #include "edl.h" #include "edlsession.h" +#include "file.h" #include "filesystem.h" #include "language.h" #include "localsession.h" @@ -55,10 +56,10 @@ PluginClientThread::PluginClientThread(PluginClient *client) PluginClientThread::~PluginClientThread() { + join(); //printf("PluginClientThread::~PluginClientThread %p %d\n", this, __LINE__); - delete window; + delete window; window = 0; //printf("PluginClientThread::~PluginClientThread %p %d\n", this, __LINE__); - window = 0; delete init_complete; } @@ -68,10 +69,10 @@ void PluginClientThread::run() int result = 0; if(client->window_x < 0) client->window_x = info.get_abs_cursor_x(); if(client->window_y < 0) client->window_y = info.get_abs_cursor_y(); - window = client->new_window(); + if(!window) + window = client->new_window(); - if(window) - { + if(window) { window->lock_window("PluginClientThread::run"); window->create_objects(); window->unlock_window(); @@ -85,8 +86,6 @@ void PluginClientThread::run() //printf("PluginClientThread::run %p %d\n", this, __LINE__); window->hide_window(1); window->unlock_window(); - - // Can't save defaults in the destructor because it's not called immediately // after closing. /* if(client->defaults) */ client->save_defaults_xml(); @@ -144,35 +143,14 @@ PluginClientWindow::PluginClientWindow(PluginClient *client, : BC_Window(client->gui_string, client->window_x /* - w / 2 */, client->window_y /* - h / 2 */, - w, - h, - min_w, - min_h, - allow_resize, - 0, - 1) + w, h, min_w, min_h, allow_resize, 0, 1) { this->client = client; } PluginClientWindow::PluginClientWindow(const char *title, - int x, - int y, - int w, - int h, - int min_w, - int min_h, - int allow_resize) - : BC_Window(title, - x, - y, - w, - h, - min_w, - min_h, - allow_resize, - 0, - 1) + int x, int y, int w, int h, int min_w, int min_h, int allow_resize) + : BC_Window(title, x, y, w, h, min_w, min_h, allow_resize, 0, 1) { this->client = 0; } @@ -217,11 +195,7 @@ PluginClient::PluginClient(PluginServer *server) PluginClient::~PluginClient() { // Delete the GUI thread. The GUI must be hidden with hide_gui first. - if(thread) - { - thread->join(); - delete thread; - } + delete thread; // Virtual functions don't work here. if(defaults) delete defaults; @@ -384,7 +358,7 @@ int PluginClient::set_string() if(thread) { thread->window->lock_window("PluginClient::set_string"); - thread->window->set_title(gui_string); + thread->window->put_title(gui_string); thread->window->unlock_window(); } return 0; @@ -619,23 +593,21 @@ void PluginClient::save_defaults_xml() using_defaults = 1; KeyFrame temp_keyframe; - save_data(&temp_keyframe); - FILE *fd = fopen(path, "w"); - if(fd) - { - fprintf(fd, "%d\n%d\n", window_x, window_y); - if(!fwrite(temp_keyframe.get_data(), strlen(temp_keyframe.get_data()), 1, fd)) - { + + const char *data = temp_keyframe.get_data(); + int len = strlen(data); + FILE *fp = fopen(path, "w"); + + if( fp ) { + fprintf(fp, "%d\n%d\n", window_x, window_y); + if( len > 0 && !fwrite(data, len, 1, fp) ) { fprintf(stderr, "PluginClient::save_defaults_xml %d \"%s\" %d bytes: %s\n", - __LINE__, - path, - (int)strlen(temp_keyframe.get_data()), - strerror(errno)); + __LINE__, path, len, strerror(errno)); } - - fclose(fd); + fclose(fp); } + using_defaults = 0; } @@ -687,12 +659,6 @@ int PluginClient::get_gui_status() return server->get_gui_status(); } -int PluginClient::start_plugin() -{ - printf(_("No processing defined for this plugin.\n")); - return 0; -} - // close event from client side void PluginClient::client_side_close() { @@ -843,7 +809,7 @@ int PluginClient::get_project_smp() const char* PluginClient::get_defaultdir() { - return BCASTDIR; + return File::get_plugin_path(); }