p/s proxy icon, rework window locks, segv in close_mixers + exportedl, ffmpeg default...
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowgui.C
index 679a56e33fe429f1ca001435054ed0059ce78ccf..baea64a815d2e07d1163cb30bf03284ee3440303 100644 (file)
@@ -251,6 +251,7 @@ void MWindowGUI::get_scrollbars(int flush)
 
 void MWindowGUI::create_objects()
 {
+       lock_window("MWindowGUI::create_objects");
        const int debug = 0;
 
        resource_thread = new ResourceThread(mwindow, this);
@@ -373,6 +374,7 @@ void MWindowGUI::create_objects()
        pane[TOP_LEFT_PANE]->canvas->activate();
 
        if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__);
+       unlock_window();
 }
 
 void MWindowGUI::redraw_time_dependancies()
@@ -666,9 +668,9 @@ void MWindowGUI::update_proxy_toggle()
 {
        if( mwindow->edl->session->proxy_scale == 1 &&
            mwindow->edl->session->proxy_disabled_scale == 1 )
-               proxy_toggle->hide_window();
+               proxy_toggle->hide();
        else
-               proxy_toggle->show_window();
+               proxy_toggle->show();
 }
 
 void MWindowGUI::update_plugintoggles()
@@ -2388,15 +2390,36 @@ int FFMpegToggle::handle_event()
 
 
 ProxyToggle::ProxyToggle(MWindow *mwindow, MButtons *mbuttons, int x, int y)
- : BC_Toggle(x, y, mwindow->theme->proxy_toggle,
+ : BC_Toggle(x, y, ( !mwindow->edl->session->proxy_use_scaler ?
+                       mwindow->theme->proxy_p_toggle :
+                       mwindow->theme->proxy_s_toggle ),
                mwindow->edl->session->proxy_disabled_scale != 1)
 {
        this->mwindow = mwindow;
        this->mbuttons = mbuttons;
+       scaler_images = mwindow->edl->session->proxy_use_scaler;
        set_tooltip(mwindow->edl->session->proxy_disabled_scale==1 ?
                _("Disable proxy") : _("Enable proxy"));
 }
 
+void ProxyToggle::show()
+{
+       int use_scaler = mwindow->edl->session->proxy_use_scaler;
+       if( scaler_images != use_scaler )
+               set_images(!(scaler_images=use_scaler) ?
+                       mwindow->theme->proxy_p_toggle :
+                       mwindow->theme->proxy_s_toggle );
+       draw_face(1, 0);
+       if( is_hidden() )
+               show_window();
+}
+
+void ProxyToggle::hide()
+{
+       if( !is_hidden() )
+               hide_window();
+}
+
 ProxyToggle::~ProxyToggle()
 {
 }