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@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 );