p/s proxy icon, rework window locks, segv in close_mixers + exportedl, ffmpeg default...
[goodguy/history.git] / cinelerra-5.1 / guicast / bcwindowbase.C
index 24dc5872e0e3ee426b504bffd009a9c305ede949..db085e863655fc86bc011af6c875b825a7d9d43a 100644 (file)
@@ -390,12 +390,8 @@ int BC_WindowBase::create_window(BC_WindowBase *parent_window, const char *title
 #endif
 
        id = get_resources()->get_id();
-       int need_lock = 0;
        if(parent_window) top_level = parent_window->top_level;
-       if( top_level ) { // need this to avoid deadlock with Xlib's locks
-               need_lock = 1;
-               lock_window("BC_WindowBase::create_window");
-       }
+       if( top_level ) lock_window("BC_WindowBase::create_window");
        get_resources()->create_window_lock->lock("BC_WindowBase::create_window");
 
 #ifdef HAVE_LIBXXF86VM
@@ -445,6 +441,7 @@ int BC_WindowBase::create_window(BC_WindowBase *parent_window, const char *title
                if( shm_completion_event < 0 ) shm_completion_event =
                        ShmCompletion + XShmGetEventBase(display);
 #endif
+               lock_window("BC_WindowBase::create_window 1");
 
                screen = DefaultScreen(display);
                rootwin = RootWindow(display, screen);
@@ -638,7 +635,7 @@ int BC_WindowBase::create_window(BC_WindowBase *parent_window, const char *title
                if(!hidden) show_window();
        }
        get_resources()->create_window_lock->unlock();
-       if(need_lock) unlock_window();
+       unlock_window();
 
        return 0;
 }