png img proxy fixes, speed zoom segv fix, colapse ins 1frm silence undo, repair rende...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / resizetrackthread.C
index 1c2eadc841c0ecd02f089a7b40f81e7469037301..a9548455b2c86b28297ebb546a41668db7bf5d70 100644 (file)
@@ -60,6 +60,12 @@ ResizeVTrackThread::~ResizeVTrackThread()
 
 void ResizeVTrackThread::start_window(int w, int h, int w1, int h1)
 {
+       if( window && running() ) {
+               window->lock_window();
+               window->raise_window();
+               window->unlock_window();
+               return;
+       }
        this->w = w;    this->h = h;
        this->w1 = w1;  this->h1 = h1;
        w_scale = h_scale = 1;
@@ -69,24 +75,18 @@ void ResizeVTrackThread::start_window(int w, int h, int w1, int h1)
 
 void ResizeVTrackThread::run()
 {
-       ResizeVTrackWindow *window = this->window =
-               new ResizeVTrackWindow(mwindow,
-                       this,
+       window = new ResizeVTrackWindow(mwindow, this,
                        mwindow->gui->get_abs_cursor_x(1),
                        mwindow->gui->get_abs_cursor_y(1));
        window->create_objects();
        int result = window->run_window();
-       this->window = 0;
-       delete window;
 
-
-       if(!result)
-       {
+       delete window;  window = 0;
+       if(!result) {
                update();
        }
 
-       if(((w % 4) ||
-               (h % 4)) &&
+       if(((w % 4) || (h % 4)) &&
                mwindow->edl->session->playback_config->vconfig->driver == PLAYBACK_X11_GL)
        {
                MainError::show_error(
@@ -299,7 +299,8 @@ void ResizeTrackThread::start_window(Track *track)
 
 void ResizeTrackThread::update()
 {
-       mwindow->resize_track(track, w, h);
+       if( mwindow->edl->tracks->track_exists(track) )
+               mwindow->resize_track(track, w, h);
 }
 
 
@@ -350,7 +351,8 @@ ResizeAssetButton::~ResizeAssetButton()
 
 int ResizeAssetButton::handle_event()
 {
-       resize_asset_thread = new ResizeAssetThread(fwindow);
+       if( !resize_asset_thread )
+               resize_asset_thread = new ResizeAssetThread(fwindow);
        resize_asset_thread->start_window(fwindow->asset_edit->changed_params);
         return 1;
 }