[PATCH] winex11.drv: Redraw window on Expose event if window surface has no region set.

Paul Gofman gofmanp at gmail.com
Fri Apr 3 07:34:57 CDT 2020


Otherwise the window (partially) obscured by the other window sometimes fails
to update when the obscuring window is moved or destroyed.

Signed-off-by: Paul Gofman <gofmanp at gmail.com>
---
 dlls/winex11.drv/bitblt.c | 5 +++++
 dlls/winex11.drv/event.c  | 1 +
 2 files changed, 6 insertions(+)

diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c
index b530ba7ba6..ac430ef4c0 100644
--- a/dlls/winex11.drv/bitblt.c
+++ b/dlls/winex11.drv/bitblt.c
@@ -2106,6 +2106,11 @@ HRGN expose_surface( struct window_surface *window_surface, const RECT *rect )
             region = 0;
         }
     }
+    else
+    {
+        region = (HRGN)1;
+    }
+
     window_surface->funcs->unlock( window_surface );
     return region;
 }
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index 10d71c2cb4..6424790a62 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -941,6 +941,7 @@ static BOOL X11DRV_Expose( HWND hwnd, XEvent *xev )
         {
             surface_region = expose_surface( data->surface, &rect );
             if (!surface_region) flags = 0;
+            else if(surface_region == (HRGN)1) surface_region = NULL;
             else OffsetRgn( surface_region, data->whole_rect.left - data->client_rect.left,
                             data->whole_rect.top - data->client_rect.top );
 
-- 
2.25.1




More information about the wine-devel mailing list