Dmitry Timoshkov : winex11.drv: Make sure that default clipping region exists before calling ExcludeUpdateRgn ().

Alexandre Julliard julliard at winehq.org
Thu Apr 7 07:36:49 CDT 2011


Module: wine
Branch: stable
Commit: 9d9570453a05f7bbaaf7a91a6f520e6a4af6ff9b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9d9570453a05f7bbaaf7a91a6f520e6a4af6ff9b

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Mon Jan 31 19:30:43 2011 +0800

winex11.drv: Make sure that default clipping region exists before calling ExcludeUpdateRgn().
(cherry picked from commit 38167e71d1ccff264d269c3bee7e1a448871829a)

---

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

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 18a86b2..ef515ee 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1600,7 +1600,7 @@ static void move_window_bits( struct x11drv_win_data *data, const RECT *old_rect
     RECT dst_rect = *new_rect;
     HDC hdc_src, hdc_dst;
     INT code;
-    HRGN rgn = 0;
+    HRGN rgn;
     HWND parent = 0;
 
     if (!data->whole_window)
@@ -1619,6 +1619,9 @@ static void move_window_bits( struct x11drv_win_data *data, const RECT *old_rect
         hdc_src = hdc_dst = GetDCEx( data->hwnd, 0, DCX_CACHE );
     }
 
+    rgn = CreateRectRgnIndirect( &dst_rect );
+    SelectClipRgn( hdc_dst, rgn );
+    DeleteObject( rgn );
     ExcludeUpdateRgn( hdc_dst, data->hwnd );
 
     code = X11DRV_START_EXPOSURES;
@@ -1631,6 +1634,7 @@ static void move_window_bits( struct x11drv_win_data *data, const RECT *old_rect
             dst_rect.right - dst_rect.left, dst_rect.bottom - dst_rect.top,
             hdc_src, src_rect.left, src_rect.top, SRCCOPY );
 
+    rgn = 0;
     code = X11DRV_END_EXPOSURES;
     ExtEscape( hdc_dst, X11DRV_ESCAPE, sizeof(code), (LPSTR)&code, sizeof(rgn), (LPSTR)&rgn );
 




More information about the wine-cvs mailing list