X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fcanvas.C;fp=cinelerra-5.1%2Fcinelerra%2Fcanvas.C;h=a1f458541cea8d8080cf4bad17b9470dfc394be9;hb=b5bfe3e40a7255ae60a21d885587ada6e145e3d5;hp=2319f14b3b1ca0face0de48cd77e127b0a600e6a;hpb=1671ba56125f316b8557edea8771e6732981c047;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/canvas.C b/cinelerra-5.1/cinelerra/canvas.C index 2319f14b..a1f45854 100644 --- a/cinelerra-5.1/cinelerra/canvas.C +++ b/cinelerra-5.1/cinelerra/canvas.C @@ -690,6 +690,7 @@ int Canvas::keypress_event(BC_WindowBase *caller) return 1; } +// process_scope uses the refresh frame for opengl void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame) { int best_color_model = output_frame->get_color_model(); @@ -734,6 +735,20 @@ void Canvas::update_refresh(VideoDevice *device, VFrame *output_frame) refresh_frame->transfer_from(output_frame, -1); } +void Canvas::process_scope(VideoDevice *video, VFrame *frame) +{ + if( !scope_on() ) return; + int use_opengl = + video->out_config->driver == PLAYBACK_X11_GL && + frame->get_opengl_state() != VFrame::RAM; + if( use_opengl ) { + update_refresh(video, frame); + frame = refresh_frame; + } + if( frame ) + draw_scope(frame); +} + void Canvas::clear(int flash) { BC_WindowBase *window = get_canvas();