Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / vwindowgui.C
index 8a3e5888602f2fc0787d511bb7fee09b9de9a981..9b7f6ca8cafced412de405ac6e856b3600ab6bde 100644 (file)
@@ -79,6 +79,8 @@ VWindowGUI::VWindowGUI(MWindow *mwindow, VWindow *vwindow)
 //     source = 0;
        strcpy(loaded_title, "");
        highlighted = 0;
+// *** CONTEXT_HELP ***
+       context_help_set_keyword("Viewer Window");
 }
 
 VWindowGUI::~VWindowGUI()
@@ -95,7 +97,7 @@ VWindowGUI::~VWindowGUI()
 
 void VWindowGUI::draw_wave()
 {
-       TransportCommand command;
+       TransportCommand command(mwindow->preferences);
        command.command = NORMAL_FWD;
        command.get_edl()->copy_all(vwindow->get_edl());
        command.change_type = CHANGE_ALL;
@@ -129,7 +131,7 @@ void VWindowGUI::draw_wave()
 
        for( int i=channels; --i>=0; ) delete samples[i];
        delete render_engine;
-       delete cache;
+       cache->remove_user();
        delete canvas->refresh_frame;
        canvas->refresh_frame = vframe;
        canvas->refresh(1);
@@ -227,6 +229,7 @@ void VWindowGUI::create_objects()
                mwindow->theme->vtransport_x,
                mwindow->theme->vtransport_y);
        transport->create_objects();
+       transport->set_transport(LOOP_MODE);
 
 //printf("VWindowGUI::create_objects 1\n");
 //     add_subwindow(fps_title = new BC_Title(mwindow->theme->vedit_x, y, ""));
@@ -381,6 +384,8 @@ int VWindowGUI::keypress_event()
        }
        if( !result )
                result = transport->keypress_event();
+       if( !result )
+               result = context_help_check_and_show();
        return result;
 }
 
@@ -558,7 +563,9 @@ VWindowEditing::VWindowEditing(MWindow *mwindow, VWindow *vwindow)
                0, // use_commerical
                0, // use_goto
                1, // use_clk2play
-               1) // use_scope
+               1, // use_scope
+               0, // use_gang_tracks
+               0) // use_timecode
 {
        this->mwindow = mwindow;
        this->vwindow = vwindow;
@@ -703,6 +710,7 @@ void VWindowEditing::panel_set_editing_mode(int mode) {}
 void VWindowEditing::panel_set_auto_keyframes(int v) {}
 void VWindowEditing::panel_set_span_keyframes(int v) {}
 void VWindowEditing::panel_set_labels_follow_edits(int v) {}
+void VWindowEditing::panel_set_gang_tracks(int v) {}
 
 
 VWindowSource::VWindowSource(MWindow *mwindow, VWindowGUI *vwindow, int x, int y)
@@ -832,6 +840,7 @@ int VWindowCanvas::scope_on()
        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();
 }
 
@@ -841,9 +850,18 @@ void VWindowCanvas::draw_scope(VFrame *output, int refresh)
        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)
 {
        if( !get_canvas()->get_video_on() ) {