From 8322fc6a57b865a11bf1d5a5149339cd804a1324 Mon Sep 17 00:00:00 2001 From: Ulrich Czekalla Date: Tue, 10 Aug 2004 23:42:52 +0000 Subject: [PATCH] Avoid holding x11drv lock while calling function that grabs gdi lock. Prevents potential deadly embrace. --- dlls/x11drv/winpos.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c index abf326b3a44..094f258f332 100644 --- a/dlls/x11drv/winpos.c +++ b/dlls/x11drv/winpos.c @@ -959,7 +959,6 @@ BOOL X11DRV_SetWindowPos( WINDOWPOS *winpos ) wine_tsx11_unlock(); } - wine_tsx11_lock(); if (bChangePos) X11DRV_sync_whole_window_position( display, wndPtr, !(winpos->flags & SWP_NOZORDER) ); else @@ -973,7 +972,9 @@ BOOL X11DRV_SetWindowPos( WINDOWPOS *winpos ) (winpos->flags & SWP_FRAMECHANGED)) { /* if we moved the client area, repaint the whole non-client window */ + wine_tsx11_lock(); XClearArea( display, get_whole_window(wndPtr), 0, 0, 0, 0, True ); + wine_tsx11_unlock(); winpos->flags |= SWP_FRAMECHANGED; } if (winpos->flags & SWP_SHOWWINDOW) @@ -986,8 +987,11 @@ BOOL X11DRV_SetWindowPos( WINDOWPOS *winpos ) { /* resizing from zero size to non-zero -> map */ TRACE( "mapping non zero size or off-screen win %p\n", winpos->hwnd ); + wine_tsx11_lock(); XMapWindow( display, get_whole_window(wndPtr) ); + wine_tsx11_unlock(); } + wine_tsx11_lock(); XFlush( display ); /* FIXME: should not be necessary */ wine_tsx11_unlock(); } -- 2.11.4.GIT