X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcanvas.C;h=2b3953002d58cc03f8dc56321dd223baea9ede1e;hb=refs%2Fheads%2Fmaster;hp=3e7ee0be96c1e6427b9e2f8140cee1d891514368;hpb=a4387a272874bd4ed9f010684976f336fa3d0190;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/canvas.C b/cinelerra-5.1/cinelerra/canvas.C index 3e7ee0be..2b395300 100644 --- a/cinelerra-5.1/cinelerra/canvas.C +++ b/cinelerra-5.1/cinelerra/canvas.C @@ -773,6 +773,10 @@ void Canvas::create_canvas() if(video_on) get_canvas()->start_video(); + get_canvas()->lock_window("Canvas::create_canvas 2"); + get_canvas()->focus(); + get_canvas()->unlock_window(); + unlock_canvas(); } @@ -840,7 +844,16 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame) // OpenGL does YUV->RGB in the compositing step if( use_opengl ) best_color_model = BC_RGB888; - + else if( BC_CModels::has_alpha(best_color_model) ) { + best_color_model = + BC_CModels::is_float(best_color_model ) ? + BC_RGB_FLOAT : + BC_CModels::is_yuv(best_color_model ) ? + ( BC_CModels::calculate_pixelsize(best_color_model) > 8 ? + BC_YUV161616 : BC_YUV888 ) : + ( BC_CModels::calculate_pixelsize(best_color_model) > 8 ? + BC_RGB161616 : BC_RGB888 ) ; + } int out_w = output_frame->get_w(); int out_h = output_frame->get_h(); if( refresh_frame && @@ -865,7 +878,7 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame) get_canvas()->lock_window(" Canvas::output_refresh"); } else - refresh_frame->copy_from(output_frame); + refresh_frame->transfer_from(output_frame, -1); } @@ -928,26 +941,8 @@ int CanvasOutput::keypress_event() - - - - - - - - - - -CanvasFullScreen::CanvasFullScreen(Canvas *canvas, - int w, - int h) - : BC_FullScreen(canvas->subwindow, - w, - h, - BLACK, - 0, - 0, - 0) +CanvasFullScreen::CanvasFullScreen(Canvas *canvas, int w, int h) + : BC_FullScreen(canvas->subwindow, w, h, BLACK, 0, 0, 0) { this->canvas = canvas; } @@ -957,32 +952,9 @@ CanvasFullScreen::~CanvasFullScreen() } - - - - - - - - - - - -CanvasXScroll::CanvasXScroll(EDL *edl, - Canvas *canvas, - int x, - int y, - int length, - int position, - int handle_length, - int pixels) - : BC_ScrollBar(x, - y, - SCROLL_HORIZ, - pixels, - length, - position, - handle_length) +CanvasXScroll::CanvasXScroll(EDL *edl, Canvas *canvas, int x, int y, + int length, int position, int handle_length, int pixels) + : BC_ScrollBar(x, y, SCROLL_HORIZ, pixels, length, position, handle_length) { this->canvas = canvas; } @@ -1000,25 +972,9 @@ int CanvasXScroll::handle_event() } - - - - -CanvasYScroll::CanvasYScroll(EDL *edl, - Canvas *canvas, - int x, - int y, - int length, - int position, - int handle_length, - int pixels) - : BC_ScrollBar(x, - y, - SCROLL_VERT, - pixels, - length, - position, - handle_length) +CanvasYScroll::CanvasYScroll(EDL *edl, Canvas *canvas, int x, int y, + int length, int position, int handle_length, int pixels) + : BC_ScrollBar(x, y, SCROLL_VERT, pixels, length, position, handle_length) { this->canvas = canvas; } @@ -1036,10 +992,6 @@ int CanvasYScroll::handle_event() } - - - - CanvasFullScreenPopup::CanvasFullScreenPopup(Canvas *canvas) : BC_PopupMenu(0, 0, 0, "", 0) { @@ -1074,12 +1026,6 @@ int CanvasSubWindowItem::handle_event() } - - - - - - CanvasPopup::CanvasPopup(Canvas *canvas) : BC_PopupMenu(0, 0, 0, "", 0) {