Alexandre Julliard : x11drv: Make sure to never manipulate the root
window, even if we own
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 6 15:28:04 CST 2006
Module: wine
Branch: refs/heads/master
Commit: 6d5f5447eaae4837d8da9210d21fd3265a0073d7
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=6d5f5447eaae4837d8da9210d21fd3265a0073d7
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Mar 6 21:02:59 2006 +0100
x11drv: Make sure to never manipulate the root window, even if we own
the desktop window.
---
dlls/x11drv/window.c | 6 ++++--
dlls/x11drv/winpos.c | 9 ++++++++-
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/dlls/x11drv/window.c b/dlls/x11drv/window.c
index 8eca46e..5cac2ed 100644
--- a/dlls/x11drv/window.c
+++ b/dlls/x11drv/window.c
@@ -145,7 +145,8 @@ void X11DRV_sync_window_style( Display *
int mask = get_window_attributes( data, &attr );
wine_tsx11_lock();
- XChangeWindowAttributes( display, data->whole_window, mask, &attr );
+ if (data->whole_window != DefaultRootWindow(display))
+ XChangeWindowAttributes( display, data->whole_window, mask, &attr );
wine_tsx11_unlock();
}
@@ -715,7 +716,8 @@ static void destroy_whole_window( Displa
wine_tsx11_lock();
XSync( gdi_display, False ); /* flush any reference to this drawable in GDI queue */
XDeleteContext( display, data->whole_window, winContext );
- XDestroyWindow( display, data->whole_window ); /* this destroys client too */
+ if (data->whole_window != DefaultRootWindow(display))
+ XDestroyWindow( display, data->whole_window );
data->whole_window = 0;
if (data->xic)
{
diff --git a/dlls/x11drv/winpos.c b/dlls/x11drv/winpos.c
index c49b8c9..e912531 100644
--- a/dlls/x11drv/winpos.c
+++ b/dlls/x11drv/winpos.c
@@ -586,9 +586,16 @@ BOOL X11DRV_set_window_pos( HWND hwnd, H
}
SERVER_END_REQ;
- if (win == WND_DESKTOP)
+ if (win == WND_DESKTOP || data->whole_window == DefaultRootWindow(gdi_display))
{
data->whole_rect = data->client_rect = data->window_rect = *rectWindow;
+ if (win != WND_DESKTOP)
+ {
+ win->rectWindow = *rectWindow;
+ win->rectClient = *rectClient;
+ win->dwStyle = new_style;
+ WIN_ReleasePtr( win );
+ }
return ret;
}
More information about the wine-cvs
mailing list