olaf: neophyte theme update + de.po, fullscreen geom tweak
[goodguy/history.git] / cinelerra-5.1 / cinelerra / canvas.C
index 85d4e6f51ce453286e7d2636fbf22d00d021d7ce..4f9d92344a882ea48bdb87f8ebce1825e0fc6b12 100644 (file)
@@ -739,23 +739,8 @@ void Canvas::create_canvas()
                        wdw->stop_video();
                }
 
-               int x = subwindow->get_screen_x(0, -1);
-               int y = subwindow->get_screen_y(0, -1);
-               int w = root_w;
-               int h = root_h;
-               if( mwindow->screens == 1 && root_w > scr_w0 ) {
-                       // Xinerama
-                       if( subwindow->get_x() >= scr_w0 ) {
-                               // assumes right side is the big one
-                               w = root_w - scr_w0;
-                               h = root_h;
-                       }
-                       else {
-                               // use same aspect ratio to compute left height
-                               w = scr_w0;
-                               h = (w*root_h) / (root_w-scr_w0);
-                       }
-               }
+               int x, y, w, h;
+               wdw->get_fullscreen_geometry(x, y, w, h);
 
                if( canvas_fullscreen )
                {
@@ -851,15 +836,17 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
        int best_color_model = output_frame->get_color_model();
        int use_opengl =
                device->out_config->driver == PLAYBACK_X11_GL &&
-               output_frame->get_opengl_state() == VFrame::SCREEN;
+               output_frame->get_opengl_state() != VFrame::RAM;
 
 // OpenGL does YUV->RGB in the compositing step
        if( use_opengl )
                best_color_model = BC_RGB888;
 
+       int out_w = output_frame->get_w();
+       int out_h = output_frame->get_h();
        if( refresh_frame &&
-          (refresh_frame->get_w() != device->out_w ||
-           refresh_frame->get_h() != device->out_h ||
+          (refresh_frame->get_w() != out_w ||
+           refresh_frame->get_h() != out_h ||
            refresh_frame->get_color_model() != best_color_model ) ) {
 // x11 direct render uses BC_BGR8888, use tranfer_from to remap
                delete refresh_frame;  refresh_frame = 0;
@@ -867,7 +854,7 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
 
        if( !refresh_frame ) {
                refresh_frame =
-                       new VFrame(device->out_w, device->out_h, best_color_model);
+                       new VFrame(out_w, out_h, best_color_model);
        }
 
        if( use_opengl ) {
@@ -879,7 +866,7 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame)
                get_canvas()->lock_window(" Canvas::output_refresh");
        }
        else
-               refresh_frame->transfer_from(output_frame);
+               refresh_frame->copy_from(output_frame);
 }