mask tool/gui rework, plugin_cuda CUDA_PATH fix, raise filebox/tool guis on open...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / cwindow.C
index 1511867bd8ab1c4e99157a218fbaf4a6f13f915d..d60617582f2e29312972737450bc096416c0c875 100644 (file)
@@ -59,6 +59,10 @@ CWindow::CWindow(MWindow *mwindow)
  : Thread(1, 0, 0)
 {
        this->mwindow = mwindow;
+       this->playback_engine = 0;
+       this->playback_cursor = 0;
+       this->mask_track_id = -1;
+       this->gui = 0;
 }
 
 
@@ -75,26 +79,14 @@ CWindow::~CWindow()
 
 void CWindow::create_objects()
 {
-       destination = mwindow->defaults->get("CWINDOW_DESTINATION", 0);
-
-
        gui = new CWindowGUI(mwindow, this);
-
        gui->create_objects();
-
-
        playback_engine = new CPlayback(mwindow, this, gui->canvas);
-
-
 // Start command loop
        playback_engine->create_objects();
-
        gui->transport->set_engine(playback_engine);
-
        playback_cursor = new CTracking(mwindow, this);
-
        playback_cursor->create_objects();
-
 }
 
 
@@ -129,21 +121,25 @@ void CWindow::hide_window()
 
 Track* CWindow::calculate_affected_track()
 {
-       Track* affected_track = 0;
-       for(Track *track = mwindow->edl->tracks->first;
-               track;
-               track = track->next)
-       {
-               if(track->data_type == TRACK_VIDEO &&
-                       track->record)
-               {
-                       affected_track = track;
-                       break;
-               }
+       Track *track = mwindow->edl->tracks->first;
+       for( ; track; track=track->next ) {
+               if( track->data_type != TRACK_VIDEO ) continue;
+               if( track->record ) break;
        }
-       return affected_track;
+       return track;
 }
 
+Track* CWindow::calculate_mask_track()
+{
+       Track *track = mwindow->edl->tracks->first;
+       for( ; track; track=track->next ) {
+               if( track->data_type != TRACK_VIDEO ) continue;
+               if( track->record && track->get_id() == mask_track_id ) break;
+       }
+       return track;
+}
+
+
 Auto* CWindow::calculate_affected_auto(Autos *autos,
                int create, int *created, int redraw)
 {
@@ -221,7 +217,7 @@ void CWindow::update(int dir, int overlays, int tool_window, int operation, int
 
 // Updated by video device.
        if( overlays && !dir )
-               gui->canvas->draw_refresh();
+               gui->canvas->refresh(1);
 
 // Update tool parameters
 // Never updated by someone else