fix cache bug in last update
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / vwindowgui.C
index 8370b4aaf555af96ded1b6967d7264ef29af83e3..25404f32f2f597c1169fb0bbc31ad7a6a0ba2ae3 100644 (file)
@@ -829,14 +829,29 @@ void VWindowCanvas::close_source()
 
 int VWindowCanvas::scope_on()
 {
-       return !gui->edit_panel->scope_dialog ? 0 :
-               gui->edit_panel->scope_dialog->running();
+       EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+       if( !scope_dialog || !scope_dialog->scope_gui ) return 0;
+       if( scope_dialog->scope_gui->use_refresh ) return 0;
+       if( scope_dialog->scope_gui->use_release ) return 0;
+       return scope_dialog->running();
 }
 
-void VWindowCanvas::draw_scope(VFrame *output)
+void VWindowCanvas::draw_scope(VFrame *output, int refresh)
 {
-       if( gui->edit_panel->scope_dialog && output )
-               gui->edit_panel->scope_dialog->process(output);
+       if( !output ) return;
+       EditPanelScopeDialog *scope_dialog = gui->edit_panel->scope_dialog;
+       if( !scope_dialog || !scope_dialog->scope_gui ) return;
+       if( scope_dialog->scope_gui->use_refresh && !refresh ) return;
+       if( scope_dialog->scope_gui->use_release && refresh >= 0 ) return;
+       scope_dialog->process(output);
+}
+
+int VWindowCanvas::button_release_event()
+{
+       BC_WindowBase *window = get_canvas();
+       if( window && !window->get_video_on() )
+               draw_scope(refresh_frame, -1);
+       return Canvas::button_release_event();
 }
 
 void VWindowCanvas::draw_refresh(int flush)