[PATCH] winex11.drv: When mapping a layered window make sure that surface has a valid bounding rectangle.

Dmitry Timoshkov dmitry at baikal.ru
Thu Aug 12 09:25:21 CDT 2021


Otherwise surface->flush() would be a no-op.
This may happen
1. when UpdateLayeredWindow() was initially called on an invisible window
2. when a window is unmapped during being converted to managed
3. layered windows are mapped only once their attributes are set

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/winex11.drv/window.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 4e856a41865..dfe7d1ce716 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1128,7 +1128,10 @@ static void map_window( HWND hwnd, DWORD new_style )
             XMapWindow( data->display, data->whole_window );
             XFlush( data->display );
             if (data->surface && data->vis.visualid != default_visual.visualid)
+            {
+                add_bounds_rect( data->surface->funcs->get_bounds( data->surface ), &data->window_rect );
                 data->surface->funcs->flush( data->surface );
+            }
         }
         else set_xembed_flags( data, XEMBED_MAPPED );
 
-- 
2.31.1




More information about the wine-devel mailing list