Alexandre Julliard : winex11: Only create the client window when the pixel format is changed.

Alexandre Julliard julliard at winehq.org
Mon Sep 3 13:19:13 CDT 2012


Module: wine
Branch: master
Commit: d596b62d95f20d59e13e76aaac5e9652e4dda8cc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d596b62d95f20d59e13e76aaac5e9652e4dda8cc

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Aug 30 16:18:46 2012 +0200

winex11: Only create the client window when the pixel format is changed.

---

 dlls/winex11.drv/systray.c |    3 +--
 dlls/winex11.drv/window.c  |   12 ++----------
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/dlls/winex11.drv/systray.c b/dlls/winex11.drv/systray.c
index 89b89a4..7efc63d 100644
--- a/dlls/winex11.drv/systray.c
+++ b/dlls/winex11.drv/systray.c
@@ -542,7 +542,6 @@ static void dock_systray_icon( Display *display, struct tray_icon *icon, Window
     attr.background_pixmap = ParentRelative;
     attr.bit_gravity = ForgetGravity;
     XChangeWindowAttributes( display, data->whole_window, CWBackPixmap | CWBitGravity, &attr );
-    XChangeWindowAttributes( display, data->client_window, CWBackPixmap | CWBitGravity, &attr );
 }
 
 /* dock systray windows again with the new owner */
@@ -619,7 +618,7 @@ static BOOL modify_icon( struct tray_icon *icon, NOTIFYICONDATAW *nid )
             else
             {
                 struct x11drv_win_data *data = X11DRV_get_win_data( icon->window );
-                if (data) XClearArea( gdi_display, data->client_window, 0, 0, 0, 0, True );
+                if (data) XClearArea( gdi_display, data->whole_window, 0, 0, 0, 0, True );
             }
         }
     }
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 52c18cf..ec51d37 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1697,13 +1697,6 @@ static Window create_whole_window( Display *display, struct x11drv_win_data *dat
                                         visual, mask, &attr );
     if (!data->whole_window) goto done;
 
-    if (!create_client_window( display, data, NULL ))
-    {
-        XDestroyWindow( display, data->whole_window );
-        data->whole_window = 0;
-        goto done;
-    }
-
     set_initial_wm_hints( display, data );
     set_wm_hints( display, data );
 
@@ -1758,7 +1751,7 @@ static void destroy_whole_window( Display *display, struct x11drv_win_data *data
 
     TRACE( "win %p xwin %lx/%lx\n", data->hwnd, data->whole_window, data->client_window );
     XDeleteContext( display, data->whole_window, winContext );
-    XDeleteContext( display, data->client_window, winContext );
+    if (data->client_window) XDeleteContext( display, data->client_window, winContext );
     if (!already_destroyed) XDestroyWindow( display, data->whole_window );
     data->whole_window = data->client_window = 0;
     data->wm_state = WithdrawnState;
@@ -1886,11 +1879,10 @@ static struct x11drv_win_data *create_desktop_win_data( Display *display, HWND h
     struct x11drv_win_data *data;
 
     if (!(data = alloc_win_data( display, hwnd ))) return NULL;
-    data->whole_window = data->client_window = root_window;
+    data->whole_window = root_window;
     data->managed = TRUE;
     SetPropA( data->hwnd, managed_prop, (HANDLE)1 );
     SetPropA( data->hwnd, whole_window_prop, (HANDLE)root_window );
-    SetPropA( data->hwnd, client_window_prop, (HANDLE)root_window );
     set_initial_wm_hints( display, data );
     return data;
 }




More information about the wine-cvs mailing list