build tweaks for fc30, glFinish fix
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / canvas.C
index 6b3f65085c920ea3994a224e8007287b4eb59b7a..707c95c0412c8e95cf72ea85111b16d7099baba2 100644 (file)
@@ -88,6 +88,7 @@ void Canvas::reset()
        canvas_subwindow = 0;
        canvas_fullscreen = 0;
        is_processing = 0;
+       is_fullscreen = 0;
        cursor_inside = 0;
 }
 
@@ -135,6 +136,16 @@ void Canvas::use_vwindow()
        canvas_menu->use_vwindow();
 }
 
+int Canvas::get_fullscreen()
+{
+       return is_fullscreen;
+}
+
+void Canvas::set_fullscreen(int value)
+{
+       is_fullscreen = value;
+}
+
 // Get dimensions given a zoom
 void Canvas::calculate_sizes(float aspect_ratio,
        int output_w,
@@ -589,7 +600,7 @@ void Canvas::update_geometry(EDL *edl, int x, int y, int w, int h)
                    vw != view_w || vh != view_h ) redraw = 1;
        }
        if( !redraw ) return;
-       reposition_window(edl, x, y, w, y);
+       reposition_window(edl, x, y, w, h);
 }
 
 void Canvas::reposition_window(EDL *edl, int x, int y, int w, int h)
@@ -720,7 +731,6 @@ void Canvas::create_canvas()
        int video_on = 0;
        lock_canvas("Canvas::create_canvas");
 
-
        if(!get_fullscreen())
 // Enter windowed
        {
@@ -756,8 +766,7 @@ void Canvas::create_canvas()
                int x, y, w, h;
                wdw->get_fullscreen_geometry(x, y, w, h);
 
-               if( canvas_fullscreen )
-               {
+               if( canvas_fullscreen ) {
                        if( x != canvas_fullscreen->get_x() ||
                            y != canvas_fullscreen->get_y() ||
                            w != canvas_fullscreen->get_w() ||
@@ -766,26 +775,21 @@ void Canvas::create_canvas()
                                canvas_fullscreen = 0;
                        }
                }
-               if(!canvas_fullscreen)
-               {
+               if( !canvas_fullscreen )
                        canvas_fullscreen = new CanvasFullScreen(this, w, h);
-               }
-               else
-               {
-                       canvas_fullscreen->reposition_window(x, y);
-                       canvas_fullscreen->show_window();
-               }
+               canvas_fullscreen->show_window();
+               canvas_fullscreen->sync_display();
+               canvas_fullscreen->reposition_window(x, y);
        }
 
-
-       if(!video_on)
-       {
+       if( !video_on ) {
                get_canvas()->lock_window("Canvas::create_canvas 1");
                draw_refresh();
                get_canvas()->unlock_window();
        }
 
-       if(video_on) get_canvas()->start_video();
+       if( video_on )
+               get_canvas()->start_video();
 
        get_canvas()->lock_window("Canvas::create_canvas 2");
        get_canvas()->focus();
@@ -886,7 +890,6 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
        if( use_opengl ) {
                get_canvas()->unlock_window();
                unlock_canvas();
-
                mwindow->playback_3d->copy_from(this, refresh_frame, output_frame, 0);
                lock_canvas(" Canvas::output_refresh");
                get_canvas()->lock_window(" Canvas::output_refresh");
@@ -895,20 +898,16 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
                refresh_frame->transfer_from(output_frame, -1);
 }
 
-
-void Canvas::clear(int flush)
+void Canvas::clear(int flash)
 {
-       if( refresh_frame )
-               refresh_frame->clear_frame();
-       BC_WindowBase *wdw = get_canvas();
-       if( !wdw ) return;
-       wdw->set_bg_color(BLACK);
-       wdw->clear_box(0,0, wdw->get_w(), wdw->get_h());
-       wdw->flash(flush);
+       BC_WindowBase *cwdw = get_canvas();
+       if( !cwdw )  return;
+       cwdw->set_bg_color(BLACK);
+       cwdw->clear_box(0,0, cwdw->get_w(), cwdw->get_h());
+       if( flash ) cwdw->flash();
 }
 
 
-
 CanvasOutput::CanvasOutput(Canvas *canvas,
     int x,
     int y,