#include "condition.h"
#include "edl.h"
#include "edlsession.h"
+#include "file.h"
#include "filesystem.h"
#include "language.h"
#include "localsession.h"
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;
}
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();
//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();
: 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;
}
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;
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;
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;
}
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()
{
const char* PluginClient::get_defaultdir()
{
- return BCASTDIR;
+ return File::get_plugin_path();
}