Alexandre Julliard : winex11: Use SetWindowPos to invalidate DCEs when changing the pixel format.

Alexandre Julliard julliard at winehq.org
Tue Apr 22 06:47:12 CDT 2008


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Apr 21 20:32:22 2008 +0200

winex11: Use SetWindowPos to invalidate DCEs when changing the pixel format.

---

 dlls/user32/user32.spec   |    1 -
 dlls/winex11.drv/window.c |    6 +++++-
 dlls/winex11.drv/x11drv.h |    1 -
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index 7057399..73af8aa 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -788,4 +788,3 @@
 # Wine dll separation hacks, these will go away, don't use them
 #
 @ cdecl HOOK_CallHooks(long long long long long)
-@ cdecl WIN_invalidate_dce(long ptr) invalidate_dce
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 0802b4d..e362e9c 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -496,7 +496,10 @@ done:
     wine_tsx11_lock();
     XFlush( display );
     wine_tsx11_unlock();
-    WIN_invalidate_dce( hwnd, NULL );
+    /* force DCE invalidation */
+    SetWindowPos( hwnd, 0, 0, 0, 0, 0,
+                  SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE | SWP_NOMOVE |
+                  SWP_NOREDRAW | SWP_NOSENDCHANGING | SWP_STATECHANGED);
     return TRUE;
 }
 
@@ -559,6 +562,7 @@ static void sync_gl_drawable(Display *display, struct x11drv_win_data *data)
 
     XFreePixmap(display, data->pixmap);
     destroy_glxpixmap(display, data->gl_drawable);
+    TRACE( "Recreated GL drawable %lx to replace %lx\n", glxp, data->gl_drawable );
 
     data->pixmap = pix;
     data->gl_drawable = glxp;
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 90a2abd..450153b 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -774,7 +774,6 @@ extern void X11DRV_ForceXIMReset(HWND hwnd);
 
 /* FIXME: private functions imported from user32 */
 extern LRESULT HOOK_CallHooks( INT id, INT code, WPARAM wparam, LPARAM lparam, BOOL unicode );
-extern void WIN_invalidate_dce( HWND hwnd, const RECT *rect );
 
 #define XEMBED_MAPPED  (1 << 0)
 




More information about the wine-cvs mailing list