X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcanvas.C;h=4f9d92344a882ea48bdb87f8ebce1825e0fc6b12;hp=85d4e6f51ce453286e7d2636fbf22d00d021d7ce;hb=a21c48689604ad7142a02d6f0a8dd4776e8d4422;hpb=8d1277ccc789cf008150742da9fe66b21183541c diff --git a/cinelerra-5.1/cinelerra/canvas.C b/cinelerra-5.1/cinelerra/canvas.C index 85d4e6f5..4f9d9234 100644 --- a/cinelerra-5.1/cinelerra/canvas.C +++ b/cinelerra-5.1/cinelerra/canvas.C @@ -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); }