From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/bitblt.c | 101 +++++++++++++++++++++++++++++++++++++- dlls/winex11.drv/window.c | 100 ++----------------------------------- dlls/winex11.drv/x11drv.h | 3 +- 3 files changed, 103 insertions(+), 101 deletions(-)
diff --git a/dlls/winex11.drv/bitblt.c b/dlls/winex11.drv/bitblt.c index 11ba34739c3..de27797e2af 100644 --- a/dlls/winex11.drv/bitblt.c +++ b/dlls/winex11.drv/bitblt.c @@ -2054,8 +2054,8 @@ static const struct window_surface_funcs x11drv_surface_funcs = /*********************************************************************** * create_surface */ -struct window_surface *create_surface( HWND hwnd, Window window, const XVisualInfo *vis, const RECT *rect, - COLORREF color_key, BOOL use_alpha ) +static struct window_surface *create_surface( HWND hwnd, Window window, const XVisualInfo *vis, const RECT *rect, + COLORREF color_key, BOOL use_alpha ) { const XPixmapFormatValues *format = pixmap_formats[vis->depth]; char buffer[FIELD_OFFSET( BITMAPINFO, bmiColors[256] )]; @@ -2182,3 +2182,100 @@ HRGN expose_surface( struct window_surface *window_surface, const RECT *rect ) window_surface_unlock( window_surface ); return region; } + + +RECT get_surface_rect( RECT visible_rect ) +{ + RECT surface_rect = NtUserGetVirtualScreenRect(); + + if (!intersect_rect( &surface_rect, &surface_rect, &visible_rect )) return surface_rect; + OffsetRect( &surface_rect, -visible_rect.left, -visible_rect.top ); + surface_rect.left &= ~31; + surface_rect.top &= ~31; + surface_rect.right = max( surface_rect.left + 32, (surface_rect.right + 31) & ~31 ); + surface_rect.bottom = max( surface_rect.top + 32, (surface_rect.bottom + 31) & ~31 ); + + return visible_rect; +} + + +/*********************************************************************** + * CreateWindowSurface (X11DRV.@) + */ +BOOL X11DRV_CreateWindowSurface( HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface ) +{ + struct x11drv_win_data *data; + RECT surface_rect; + DWORD flags; + COLORREF key; + BOOL layered = NtUserGetWindowLongW( hwnd, GWL_EXSTYLE ) & WS_EX_LAYERED; + + TRACE( "hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect( visible_rect ), surface ); + + if (!(data = get_win_data( hwnd ))) return TRUE; /* use default surface */ + + if (*surface) window_surface_release( *surface ); + *surface = NULL; /* indicate that we want to draw directly to the window */ + + if (data->embedded) goto done; /* draw directly to the window */ + if (data->whole_window == root_window) goto done; /* draw directly to the window */ + if (data->client_window) goto done; /* draw directly to the window */ + if (!client_side_graphics && !layered) goto done; /* draw directly to the window */ + + surface_rect = get_surface_rect( *visible_rect ); + if (data->surface) + { + if (EqualRect( &data->surface->rect, &surface_rect )) + { + /* existing surface is good enough */ + window_surface_add_ref( data->surface ); + *surface = data->surface; + goto done; + } + } + else if (!(swp_flags & SWP_SHOWWINDOW) && !(NtUserGetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE)) goto done; + + if (!layered || !NtUserGetLayeredWindowAttributes( hwnd, &key, NULL, &flags ) || !(flags & LWA_COLORKEY)) + key = CLR_INVALID; + + *surface = create_surface( data->hwnd, data->whole_window, &data->vis, &surface_rect, key, FALSE ); + +done: + release_win_data( data ); + return TRUE; +} + + +/***************************************************************************** + * CreateLayeredWindow (X11DRV.@) + */ +BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF color_key, + struct window_surface **window_surface ) +{ + struct window_surface *surface; + struct x11drv_win_data *data; + RECT rect; + + if (!(data = get_win_data( hwnd ))) return FALSE; + + data->layered = TRUE; + if (!data->embedded && argb_visual.visualid) set_window_visual( data, &argb_visual, TRUE ); + + rect = *window_rect; + OffsetRect( &rect, -window_rect->left, -window_rect->top ); + + surface = data->surface; + if (!surface || !EqualRect( &surface->rect, &rect )) + { + data->surface = create_surface( data->hwnd, data->whole_window, &data->vis, &rect, + color_key, data->use_alpha ); + if (surface) window_surface_release( surface ); + surface = data->surface; + } + else set_surface_color_key( surface, color_key ); + + if ((*window_surface = surface)) window_surface_add_ref( surface ); + release_win_data( data ); + + return TRUE; +} diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 74a9a4f6d68..0328b4977be 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2576,20 +2576,6 @@ done: }
-static inline BOOL get_surface_rect( const RECT *visible_rect, RECT *surface_rect ) -{ - *surface_rect = NtUserGetVirtualScreenRect(); - - if (!intersect_rect( surface_rect, surface_rect, visible_rect )) return FALSE; - OffsetRect( surface_rect, -visible_rect->left, -visible_rect->top ); - surface_rect->left &= ~31; - surface_rect->top &= ~31; - surface_rect->right = max( surface_rect->left + 32, (surface_rect->right + 31) & ~31 ); - surface_rect->bottom = max( surface_rect->top + 32, (surface_rect->bottom + 31) & ~31 ); - return TRUE; -} - - /*********************************************************************** * WindowPosChanging (X11DRV.@) */ @@ -2616,7 +2602,9 @@ BOOL X11DRV_WindowPosChanging( HWND hwnd, UINT swp_flags, const RECT *window_rec if (!data->whole_window && !data->embedded) goto done; /* use default surface */ if (swp_flags & SWP_HIDEWINDOW) goto done; /* use default surface */ if (data->use_alpha) goto done; /* use default surface */ - if (!get_surface_rect( visible_rect, &surface_rect )) goto done; /* use default surface */ + + surface_rect = get_surface_rect( *visible_rect ); + if (IsRectEmpty( &surface_rect )) goto done; /* use default surface */
ret = TRUE;
@@ -2626,53 +2614,6 @@ done: }
-/*********************************************************************** - * CreateWindowSurface (X11DRV.@) - */ -BOOL X11DRV_CreateWindowSurface( HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface ) -{ - struct x11drv_win_data *data; - RECT surface_rect; - DWORD flags; - COLORREF key; - BOOL layered = NtUserGetWindowLongW( hwnd, GWL_EXSTYLE ) & WS_EX_LAYERED; - - TRACE( "hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect( visible_rect ), surface ); - - if (!(data = get_win_data( hwnd ))) return TRUE; /* use default surface */ - - if (*surface) window_surface_release( *surface ); - *surface = NULL; /* indicate that we want to draw directly to the window */ - - if (data->embedded) goto done; /* draw directly to the window */ - if (data->whole_window == root_window) goto done; /* draw directly to the window */ - if (data->client_window) goto done; /* draw directly to the window */ - if (!client_side_graphics && !layered) goto done; /* draw directly to the window */ - - if (!get_surface_rect( visible_rect, &surface_rect )) goto done; - if (data->surface) - { - if (EqualRect( &data->surface->rect, &surface_rect )) - { - /* existing surface is good enough */ - window_surface_add_ref( data->surface ); - *surface = data->surface; - goto done; - } - } - else if (!(swp_flags & SWP_SHOWWINDOW) && !(NtUserGetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE)) goto done; - - if (!layered || !NtUserGetLayeredWindowAttributes( hwnd, &key, NULL, &flags ) || !(flags & LWA_COLORKEY)) - key = CLR_INVALID; - - *surface = create_surface( data->hwnd, data->whole_window, &data->vis, &surface_rect, key, FALSE ); - -done: - release_win_data( data ); - return TRUE; -} - - /*********************************************************************** * WindowPosChanged (X11DRV.@) */ @@ -2983,41 +2924,6 @@ void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWO }
-/***************************************************************************** - * CreateLayeredWindow (X11DRV.@) - */ -BOOL X11DRV_CreateLayeredWindow( HWND hwnd, const RECT *window_rect, COLORREF color_key, - struct window_surface **window_surface ) -{ - struct window_surface *surface; - struct x11drv_win_data *data; - RECT rect; - - if (!(data = get_win_data( hwnd ))) return FALSE; - - data->layered = TRUE; - if (!data->embedded && argb_visual.visualid) set_window_visual( data, &argb_visual, TRUE ); - - rect = *window_rect; - OffsetRect( &rect, -window_rect->left, -window_rect->top ); - - surface = data->surface; - if (!surface || !EqualRect( &surface->rect, &rect )) - { - data->surface = create_surface( data->hwnd, data->whole_window, &data->vis, &rect, - color_key, data->use_alpha ); - if (surface) window_surface_release( surface ); - surface = data->surface; - } - else set_surface_color_key( surface, color_key ); - - if ((*window_surface = surface)) window_surface_add_ref( surface ); - release_win_data( data ); - - return TRUE; -} - - /*********************************************************************** * UpdateLayeredWindow (X11DRV.@) */ diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 49fb17fc7cd..e4e91e96f1e 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -266,8 +266,6 @@ extern Pixmap create_pixmap_from_image( HDC hdc, const XVisualInfo *vis, const B const struct gdi_image_bits *bits, UINT coloruse ); extern DWORD get_pixmap_image( Pixmap pixmap, int width, int height, const XVisualInfo *vis, BITMAPINFO *info, struct gdi_image_bits *bits ); -extern struct window_surface *create_surface( HWND hwnd, Window window, const XVisualInfo *vis, const RECT *rect, - COLORREF color_key, BOOL use_alpha ); extern void set_surface_color_key( struct window_surface *window_surface, COLORREF color_key ); extern HRGN expose_surface( struct window_surface *window_surface, const RECT *rect );
@@ -687,6 +685,7 @@ typedef int (*x11drv_error_callback)( Display *display, XErrorEvent *event, void
extern void X11DRV_expect_error( Display *display, x11drv_error_callback callback, void *arg ); extern int X11DRV_check_error(void); +extern RECT get_surface_rect( RECT visible_rect ); extern void X11DRV_X_to_window_rect( struct x11drv_win_data *data, RECT *rect, int x, int y, int cx, int cy ); extern POINT virtual_screen_to_root( INT x, INT y ); extern POINT root_to_virtual_screen( INT x, INT y );
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winemac.drv/macdrv.h | 3 -- dlls/winemac.drv/surface.c | 98 ++++++++++++++++++++++++++++++++++++-- dlls/winemac.drv/window.c | 92 +---------------------------------- 3 files changed, 96 insertions(+), 97 deletions(-)
diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h index 31835164e71..811947f723c 100644 --- a/dlls/winemac.drv/macdrv.h +++ b/dlls/winemac.drv/macdrv.h @@ -207,10 +207,7 @@ extern BOOL macdrv_SystemParametersInfo(UINT action, UINT int_param, void *ptr_p extern macdrv_window macdrv_get_cocoa_window(HWND hwnd, BOOL require_on_screen); extern RGNDATA *get_region_data(HRGN hrgn, HDC hdc_lptodp); extern void activate_on_following_focus(void); -extern struct window_surface *create_surface(HWND hwnd, macdrv_window window, const RECT *rect, - struct window_surface *old_surface, BOOL use_alpha); extern void set_surface_use_alpha(struct window_surface *window_surface, BOOL use_alpha); -extern void surface_clip_to_visible_rect(struct window_surface *window_surface, const RECT *visible_rect);
extern void macdrv_handle_event(const macdrv_event *event);
diff --git a/dlls/winemac.drv/surface.c b/dlls/winemac.drv/surface.c index 37e2c466926..bd40a2a2db2 100644 --- a/dlls/winemac.drv/surface.c +++ b/dlls/winemac.drv/surface.c @@ -127,8 +127,8 @@ static struct macdrv_window_surface *get_mac_surface(struct window_surface *surf /*********************************************************************** * create_surface */ -struct window_surface *create_surface(HWND hwnd, macdrv_window window, const RECT *rect, - struct window_surface *old_surface, BOOL use_alpha) +static struct window_surface *create_surface(HWND hwnd, macdrv_window window, const RECT *rect, + struct window_surface *old_surface, BOOL use_alpha) { struct macdrv_window_surface *surface; int width = rect->right - rect->left, height = rect->bottom - rect->top; @@ -265,7 +265,7 @@ done: * Intersect the accumulated drawn region with a new visible rect, * effectively discarding stale drawing in the surface slack area. */ -void surface_clip_to_visible_rect(struct window_surface *window_surface, const RECT *visible_rect) +static void surface_clip_to_visible_rect(struct window_surface *window_surface, const RECT *visible_rect) { struct macdrv_window_surface *surface = get_mac_surface(window_surface); RECT rect = *visible_rect; @@ -277,3 +277,95 @@ void surface_clip_to_visible_rect(struct window_surface *window_surface, const R intersect_rect(&window_surface->bounds, &window_surface->bounds, &rect); window_surface_unlock(window_surface); } + + +static inline RECT get_surface_rect(const RECT *visible_rect) +{ + RECT rect = *visible_rect; + + OffsetRect(&rect, -visible_rect->left, -visible_rect->top); + rect.left &= ~127; + rect.top &= ~127; + rect.right = max(rect.left + 128, (rect.right + 127) & ~127); + rect.bottom = max(rect.top + 128, (rect.bottom + 127) & ~127); + return rect; +} + + +/*********************************************************************** + * CreateWindowSurface (MACDRV.@) + */ +BOOL macdrv_CreateWindowSurface(HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface) +{ + struct macdrv_win_data *data; + DWORD style = NtUserGetWindowLongW(hwnd, GWL_STYLE); + RECT surface_rect; + + TRACE("hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect(visible_rect), surface); + + if (!(data = get_win_data(hwnd))) return TRUE; /* use default surface */ + + if (*surface) window_surface_release(*surface); + *surface = NULL; + + surface_rect = get_surface_rect(visible_rect); + if (data->surface) + { + if (EqualRect(&data->surface->rect, &surface_rect)) + { + /* existing surface is good enough */ + surface_clip_to_visible_rect(data->surface, visible_rect); + window_surface_add_ref(data->surface); + *surface = data->surface; + goto done; + } + } + else if (!(swp_flags & SWP_SHOWWINDOW) && !(style & WS_VISIBLE)) goto done; + + *surface = create_surface(data->hwnd, data->cocoa_window, &surface_rect, data->surface, FALSE); + +done: + release_win_data(data); + return TRUE; +} + + +/*********************************************************************** + * CreateLayeredWindow (MACDRV.@) + */ +BOOL macdrv_CreateLayeredWindow(HWND hwnd, const RECT *window_rect, COLORREF color_key, + struct window_surface **window_surface) +{ + struct window_surface *surface; + struct macdrv_win_data *data; + RECT rect; + + if (!(data = get_win_data(hwnd))) return FALSE; + + data->layered = TRUE; + data->ulw_layered = TRUE; + + rect = *window_rect; + OffsetRect(&rect, -window_rect->left, -window_rect->top); + + surface = data->surface; + if (!surface || !EqualRect(&surface->rect, &rect)) + { + data->surface = create_surface(data->hwnd, data->cocoa_window, &rect, NULL, TRUE); + macdrv_set_window_surface(data->cocoa_window, data->surface); + if (surface) window_surface_release(surface); + surface = data->surface; + if (data->unminimized_surface) + { + window_surface_release(data->unminimized_surface); + data->unminimized_surface = NULL; + } + } + else set_surface_use_alpha(surface, TRUE); + + if ((*window_surface = surface)) window_surface_add_ref(surface); + + release_win_data(data); + + return TRUE; +} diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 012189249a4..996e1d82300 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -1890,46 +1890,6 @@ done: }
-/*********************************************************************** - * CreateLayeredWindow (MACDRV.@) - */ -BOOL macdrv_CreateLayeredWindow(HWND hwnd, const RECT *window_rect, COLORREF color_key, - struct window_surface **window_surface) -{ - struct window_surface *surface; - struct macdrv_win_data *data; - RECT rect; - - if (!(data = get_win_data(hwnd))) return FALSE; - - data->layered = TRUE; - data->ulw_layered = TRUE; - - rect = *window_rect; - OffsetRect(&rect, -window_rect->left, -window_rect->top); - - surface = data->surface; - if (!surface || !EqualRect(&surface->rect, &rect)) - { - data->surface = create_surface(data->hwnd, data->cocoa_window, &rect, NULL, TRUE); - macdrv_set_window_surface(data->cocoa_window, data->surface); - if (surface) window_surface_release(surface); - surface = data->surface; - if (data->unminimized_surface) - { - window_surface_release(data->unminimized_surface); - data->unminimized_surface = NULL; - } - } - else set_surface_use_alpha(surface, TRUE); - - if ((*window_surface = surface)) window_surface_add_ref(surface); - - release_win_data(data); - - return TRUE; -} - /*********************************************************************** * UpdateLayeredWindow (MACDRV.@) */ @@ -1946,6 +1906,7 @@ void macdrv_UpdateLayeredWindow(HWND hwnd, const RECT *window_rect, COLORREF col
/* The ULW flags are a superset of the LWA flags. */ sync_window_opacity(data, color_key, 255, TRUE, flags); + release_win_data(data); } } @@ -1984,19 +1945,6 @@ LRESULT macdrv_WindowMessage(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) }
-static inline RECT get_surface_rect(const RECT *visible_rect) -{ - RECT rect = *visible_rect; - - OffsetRect(&rect, -visible_rect->left, -visible_rect->top); - rect.left &= ~127; - rect.top &= ~127; - rect.right = max(rect.left + 128, (rect.right + 127) & ~127); - rect.bottom = max(rect.top + 128, (rect.bottom + 127) & ~127); - return rect; -} - - /*********************************************************************** * WindowPosChanging (MACDRV.@) */ @@ -2028,44 +1976,6 @@ done: }
-/*********************************************************************** - * CreateWindowSurface (MACDRV.@) - */ -BOOL macdrv_CreateWindowSurface(HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface) -{ - struct macdrv_win_data *data; - DWORD style = NtUserGetWindowLongW(hwnd, GWL_STYLE); - RECT surface_rect; - - TRACE("hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect(visible_rect), surface); - - if (!(data = get_win_data(hwnd))) return TRUE; /* use default surface */ - - if (*surface) window_surface_release(*surface); - *surface = NULL; - - surface_rect = get_surface_rect(visible_rect); - if (data->surface) - { - if (EqualRect(&data->surface->rect, &surface_rect)) - { - /* existing surface is good enough */ - surface_clip_to_visible_rect(data->surface, visible_rect); - window_surface_add_ref(data->surface); - *surface = data->surface; - goto done; - } - } - else if (!(swp_flags & SWP_SHOWWINDOW) && !(style & WS_VISIBLE)) goto done; - - *surface = create_surface(data->hwnd, data->cocoa_window, &surface_rect, data->surface, FALSE); - -done: - release_win_data(data); - return TRUE; -} - - /*********************************************************************** * WindowPosChanged (MACDRV.@) */
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winewayland.drv/waylanddrv.h | 25 +++++++++++- dlls/winewayland.drv/window.c | 57 +-------------------------- dlls/winewayland.drv/window_surface.c | 39 +++++++++++++++++- 3 files changed, 64 insertions(+), 57 deletions(-)
diff --git a/dlls/winewayland.drv/waylanddrv.h b/dlls/winewayland.drv/waylanddrv.h index 4b92c9bf1ba..d0a8977f887 100644 --- a/dlls/winewayland.drv/waylanddrv.h +++ b/dlls/winewayland.drv/waylanddrv.h @@ -272,11 +272,34 @@ void wayland_shm_buffer_unref(struct wayland_shm_buffer *shm_buffer); * Wayland window surface */
-struct window_surface *wayland_window_surface_create(HWND hwnd, const RECT *rect); void wayland_window_surface_update_wayland_surface(struct window_surface *surface, struct wayland_surface *wayland_surface); void wayland_window_flush(HWND hwnd);
+/********************************************************************** + * Wayland Window + */ + +/* private window data */ +struct wayland_win_data +{ + struct rb_entry entry; + /* hwnd that this private data belongs to */ + HWND hwnd; + /* wayland surface (if any) for this window */ + struct wayland_surface *wayland_surface; + /* wine window_surface backing this window */ + struct window_surface *window_surface; + /* USER window rectangle relative to win32 parent window client area */ + RECT window_rect; + /* USER client rectangle relative to win32 parent window client area */ + RECT client_rect; + BOOL managed; +}; + +struct wayland_win_data *wayland_win_data_get(HWND hwnd); +void wayland_win_data_release(struct wayland_win_data *data); + /********************************************************************** * Wayland Keyboard */ diff --git a/dlls/winewayland.drv/window.c b/dlls/winewayland.drv/window.c index c006505bc90..060a25d50c6 100644 --- a/dlls/winewayland.drv/window.c +++ b/dlls/winewayland.drv/window.c @@ -56,23 +56,6 @@ static BOOL set_window_pos(HWND hwnd, HWND after, INT x, INT y, INT cx, INT cy, }
-/* private window data */ -struct wayland_win_data -{ - struct rb_entry entry; - /* hwnd that this private data belongs to */ - HWND hwnd; - /* wayland surface (if any) for this window */ - struct wayland_surface *wayland_surface; - /* wine window_surface backing this window */ - struct window_surface *window_surface; - /* USER window rectangle relative to win32 parent window client area */ - RECT window_rect; - /* USER client rectangle relative to win32 parent window client area */ - RECT client_rect; - BOOL managed; -}; - static int wayland_win_data_cmp_rb(const void *key, const struct rb_entry *entry) { @@ -153,7 +136,7 @@ static void wayland_win_data_destroy(struct wayland_win_data *data) * * Lock and return the data structure associated with a window. */ -static struct wayland_win_data *wayland_win_data_get(HWND hwnd) +struct wayland_win_data *wayland_win_data_get(HWND hwnd) { struct rb_entry *rb_entry;
@@ -172,7 +155,7 @@ static struct wayland_win_data *wayland_win_data_get(HWND hwnd) * * Release the data returned by wayland_win_data_get. */ -static void wayland_win_data_release(struct wayland_win_data *data) +void wayland_win_data_release(struct wayland_win_data *data) { assert(data); pthread_mutex_unlock(&win_data_mutex); @@ -471,42 +454,6 @@ done: }
-/*********************************************************************** - * WAYLAND_CreateWindowSurface - */ -BOOL WAYLAND_CreateWindowSurface(HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface) -{ - struct wayland_win_data *data; - RECT surface_rect; - - TRACE("hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect(visible_rect), surface); - - if (!(data = wayland_win_data_get(hwnd))) return TRUE; /* use default surface */ - - /* Release the dummy surface wine provides for toplevels. */ - if (*surface) window_surface_release(*surface); - *surface = NULL; - - surface_rect = *visible_rect; - OffsetRect(&surface_rect, -surface_rect.left, -surface_rect.top); - - /* Check if we can reuse our current window surface. */ - if (data->window_surface && - EqualRect(&data->window_surface->rect, &surface_rect)) - { - window_surface_add_ref(data->window_surface); - *surface = data->window_surface; - TRACE("reusing surface %p\n", *surface); - goto done; - } - - *surface = wayland_window_surface_create(data->hwnd, &surface_rect); - -done: - wayland_win_data_release(data); - return TRUE; -} - /*********************************************************************** * WAYLAND_WindowPosChanged */ diff --git a/dlls/winewayland.drv/window_surface.c b/dlls/winewayland.drv/window_surface.c index 888fa74c085..9377b05b4ce 100644 --- a/dlls/winewayland.drv/window_surface.c +++ b/dlls/winewayland.drv/window_surface.c @@ -449,7 +449,7 @@ static const struct window_surface_funcs wayland_window_surface_funcs = /*********************************************************************** * wayland_window_surface_create */ -struct window_surface *wayland_window_surface_create(HWND hwnd, const RECT *rect) +static struct window_surface *wayland_window_surface_create(HWND hwnd, const RECT *rect) { char buffer[FIELD_OFFSET(BITMAPINFO, bmiColors[256])]; BITMAPINFO *info = (BITMAPINFO *)buffer; @@ -516,3 +516,40 @@ void wayland_window_surface_update_wayland_surface(struct window_surface *window
window_surface_unlock(window_surface); } + + +/*********************************************************************** + * WAYLAND_CreateWindowSurface + */ +BOOL WAYLAND_CreateWindowSurface(HWND hwnd, UINT swp_flags, const RECT *visible_rect, struct window_surface **surface) +{ + struct wayland_win_data *data; + RECT surface_rect; + + TRACE("hwnd %p, swp_flags %08x, visible %s, surface %p\n", hwnd, swp_flags, wine_dbgstr_rect(visible_rect), surface); + + if (!(data = wayland_win_data_get(hwnd))) return TRUE; /* use default surface */ + + /* Release the dummy surface wine provides for toplevels. */ + if (*surface) window_surface_release(*surface); + *surface = NULL; + + surface_rect = *visible_rect; + OffsetRect(&surface_rect, -surface_rect.left, -surface_rect.top); + + /* Check if we can reuse our current window surface. */ + if (data->window_surface && + EqualRect(&data->window_surface->rect, &surface_rect)) + { + window_surface_add_ref(data->window_surface); + *surface = data->window_surface; + TRACE("reusing surface %p\n", *surface); + goto done; + } + + *surface = wayland_window_surface_create(data->hwnd, &surface_rect); + +done: + wayland_win_data_release(data); + return TRUE; +}
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=146471
Your paranoid android.
=== debian11b (64 bit WoW report) ===
comctl32: button.c:2363: Test succeeded inside todo block: Type 0xa: Expected content unchanged. header.c:1407: Test failed: NM_CUSTOMDRAW messages: 1, expected: 4 header.c:1444: Test failed: Invalid dwDrawStage 65537 vs 2 header.c:1444: Test failed: Invalid rect (0,0)-(50,18) vs (0,0)-(670,18) header.c:1434: Test failed: NM_CUSTOMDRAW messages: 2, expected: 5 header.c:1475: Test failed: Invalid dwDrawStage 65537 vs 2 header.c:1475: Test failed: Invalid rect (0,0)-(50,18) vs (0,0)-(670,18) header.c:1465: Test failed: NM_CUSTOMDRAW messages: 2, expected: 4 header.c:1536: Test failed: WM_DRAWITEM not received listview.c:2113: Test failed: parent customdraw, LVS_LIST: in msg 0x004e expecting cd stage 0x00010001 got 0x00000002 listview.c:2113: Test failed: parent customdraw, LVS_LIST: the msg sequence is not complete: expected 004e - actual 0000 listview.c:6023: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x0: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x1: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x2: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x4: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x8: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x10: got 0xffffffff listview.c:6023: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6025: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6029: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6031: Test failed: state=0 lParam=0x20: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x0: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x1: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x2: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x4: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x8: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x10: got 0xffffffff listview.c:6023: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6025: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6029: Test failed: state=5 lParam=0x20: got 0xffffffff listview.c:6031: Test failed: state=5 lParam=0x20: got 0xffffffff misc.c:940: Test succeeded inside todo block: SysAnimate32 0: paint background: marked "todo_wine" but succeeds misc.c:963: Test failed: Button 0x4: Expected color 0x808080, got 0xffffffff. misc.c:969: Test failed: Button 0x7: Expected color 0xff, got 0xffffffff. misc.c:973: Test failed: Button 0x7: Expected color 0x808080, got 0xffffffff. misc.c:963: Test failed: Button 0x9: Expected color 0x808080, got 0xffffffff. misc.c:940: Test failed: Button 0xb: paint background: the msg sequence is not complete: expected 0135 - actual 0000 misc.c:940: Test succeeded inside todo block: SysDateTimePick32 0: paint background: marked "todo_wine" but succeeds misc.c:940: Test succeeded inside todo block: msctls_hotkey32 0: paint background: marked "todo_wine" but succeeds misc.c:940: Test failed: SysPager 0: paint background: the msg sequence is not complete: expected 0014 - actual 0000 misc.c:940: Test succeeded inside todo block: ToolbarWindow32 0: paint background: marked "todo_wine" but succeeds progress.c:212: Test failed: Progress bar should have erased the background static.c:121: Test failed: Unexpected pixel color. static.c:121: Test failed: Unexpected pixel color. treeview.c:2166: Test failed: got 0xffffffff treeview.c:2174: Test failed: got 0xffffffff treeview.c:2214: Test failed: lParam=0x0: got 0xffffffff treeview.c:2218: Test failed: lParam=0x0: got 0xffffffff treeview.c:2214: Test failed: lParam=0x1: got 0xffffffff treeview.c:2218: Test failed: lParam=0x1: got 0xffffffff treeview.c:2214: Test failed: lParam=0x2: got 0xffffffff treeview.c:2218: Test failed: lParam=0x2: got 0xffffffff treeview.c:2214: Test failed: lParam=0x4: got 0xffffffff treeview.c:2218: Test failed: lParam=0x4: got 0xffffffff treeview.c:2214: Test failed: lParam=0x8: got 0xffffffff treeview.c:2218: Test failed: lParam=0x8: got 0xffffffff treeview.c:2214: Test failed: lParam=0x10: got 0xffffffff treeview.c:2218: Test failed: lParam=0x10: got 0xffffffff treeview.c:2214: Test failed: lParam=0x20: got 0xffffffff treeview.c:2218: Test failed: lParam=0x20: got 0xffffffff treeview.c:2230: Test failed: lParam=0x0: got 0xffffffff treeview.c:2234: Test failed: lParam=0x0: got 0xffffffff treeview.c:2230: Test failed: lParam=0x1: got 0xffffffff treeview.c:2234: Test failed: lParam=0x1: got 0xffffffff treeview.c:2230: Test failed: lParam=0x2: got 0xffffffff treeview.c:2234: Test failed: lParam=0x2: got 0xffffffff treeview.c:2230: Test failed: lParam=0x4: got 0xffffffff treeview.c:2234: Test failed: lParam=0x4: got 0xffffffff treeview.c:2230: Test failed: lParam=0x8: got 0xffffffff treeview.c:2234: Test failed: lParam=0x8: got 0xffffffff treeview.c:2230: Test failed: lParam=0x10: got 0xffffffff treeview.c:2234: Test failed: lParam=0x10: got 0xffffffff treeview.c:2230: Test failed: lParam=0x20: got 0xffffffff treeview.c:2234: Test failed: lParam=0x20: got 0xffffffff treeview.c:2745: Test failed: custom draw notifications: in msg 0x004e expecting cd stage 0x00010001 got 0x00000002 treeview.c:2745: Test failed: custom draw notifications: the msg sequence is not complete: expected 004e - actual 0000 treeview.c:2745: Test failed: custom draw notifications: in msg 0x004e expecting cd stage 0x00010001 got 0x00000002 treeview.c:2745: Test failed: custom draw notifications: the msg sequence is not complete: expected 004e - actual 0000
ddraw: ddraw1.c:1079: Test failed: Got unexpected bounding rect (28,80)-(646,486), expected (14,40)-(646,486). ddraw2.c:927: Test failed: Got unexpected bounding rect (28,80)-(646,486), expected (14,40)-(646,486). ddraw7.c:1205: Test failed: Got unexpected bounding rect (28,80)-(646,486), expected (14,40)-(646,486).
gdiplus: brush.c:1835: Test failed: Unexpected pattern for hatch style 0 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x3 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x4 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x5 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x6 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x7 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x8 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x9 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xa with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xb with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xc with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xd with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xe with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0xf with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x10 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x11 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x12 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x13 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x14 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x15 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x16 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x17 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x18 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x19 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1a with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1b with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1c with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1d with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1e with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x1f with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x20 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x21 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x22 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x23 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x24 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x25 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x26 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x27 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x28 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x29 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2a with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2b with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2c with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2d with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2e with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x2f with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x30 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x31 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x32 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x33 with hdc. brush.c:1835: Test failed: Unexpected pattern for hatch style 0x34 with hdc. brush.c:1923: Test failed: Hatch brush rendered incorrectly on hdc with rendering origin (3, 6). brush.c:1923: Test failed: Hatch brush rendered incorrectly on hdc with rendering origin (-7, -4). graphics.c:2220: Test failed: Expected 0, got -1 graphics.c:2228: Test failed: Expected 0, got -1 graphics.c:2258: Test failed: Expected 255, got -1
user32: dce.c:243: Test failed: invalid clip box (3,29)-(0,0) dce.c:257: Test failed: invalid clip box (3,29)-(0,0) dce.c:277: Test failed: invalid clip box (3,229)-(0,0) dce.c:284: Test failed: invalid clip box (3,229)-(0,0) dce.c:289: Test failed: invalid clip box (3,229)-(0,0) dce.c:302: Test failed: invalid clip box (3,229)-(0,0) dce.c:359: Test failed: clip box should have been reset (203,229)-(0,0) dce.c:379: Test failed: rect = (403,50)-(50,50), expected (403,29)-(0,0) dce.c:401: Test failed: invalid clip box (3,29)-(0,0) dce.c:412: Test failed: clip box = (3,29)-(113,68), expected (0,0)-(113,68) dce.c:440: Test failed: invalid clip box (3,229)-(0,0) dce.c:445: Test failed: invalid clip box (3,229)-(0,0) dce.c:450: Test failed: invalid clip box (3,229)-(0,0) dce.c:477: Test failed: clip box = (3,229)-(0,0) dce.c:482: Test failed: clip box = (3,229)-(0,0), expected (0,0)-(194,168) dce.c:502: Test failed: clip box should have been reset (203,229)-(0,0) dce.c:543: Test failed: invalid clip box (3,229)-(0,0) dce.c:554: Test failed: invalid clip box (-27,209)-(-30,-20) dce.c:562: Test failed: invalid clip box (-27,209)-(-30,-20) dce.c:573: Test failed: invalid clip box (3,229)-(0,0) msg.c:12757: Test failed: ScrollWindowEx: 0: the msg sequence is not complete: expected msg 000f - actual msg 0000 msg.c:12768: Test failed: ScrollWindowEx: 0: the msg sequence is not complete: expected msg 000f - actual msg 0000 msg.c:12782: Test failed: ScrollWindowEx: 0: the msg sequence is not complete: expected msg 000f - actual msg 0000 msg.c:5766: Test failed: SetWindowPos:show_popup_first_show_window_child2: 1: the msg 0x0014 was expected, but got winevent_hook 0x800b instead msg.c:5829: Test failed: ShowWindow(SW_SHOW):child: 4: the msg 0x0047 was expected, but got msg 0x0085 instead msg.c:5838: Test failed: ShowWindow(SW_SHOW):child: 4: the msg 0x0047 was expected, but got msg 0x0085 instead msg.c:5844: Test failed: ShowWindow(SW_SHOW):child: 4: the msg 0x0047 was expected, but got msg 0x0085 instead msg.c:5857: Test failed: SetWindowPos:show_child_2: 3: the msg 0x0047 was expected, but got msg 0x0085 instead msg.c:5862: Test failed: SetWindowPos:show_child_3: 2: the msg 0x0047 was expected, but got msg 0x0085 instead msg.c:8692: Test failed: Erase: 0: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8769: Test failed: InvalidateParentChild: 2: the msg 0x0014 was expected, but got msg 0x0085 instead msg.c:8769: Test failed: InvalidateParentChild: 4: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8779: Test failed: InvalidateParent: 1: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8788: Test failed: InvalidateParent2: 1: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8794: Test failed: InvalidateParentChild2: 0: the msg 0x0014 was expected, but got msg 0x0085 instead msg.c:8794: Test failed: InvalidateParentChild2: 2: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8800: Test failed: InvalidateParentChild3: 2: the msg 0x0014 was expected, but got msg 0x0085 instead msg.c:8800: Test failed: InvalidateParentChild3: 4: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:8966: Test failed: SetWindowPos:FrameChanged_clip: 6: the msg 0x0014 was expected, but got msg 0x0047 instead msg.c:9358: Test failed: 9466: SetWindowPos redraw #0 (ex_style = 0, style = 0x2000000, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #1 (ex_style = 0, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9466: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9466: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9466: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9466: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9466: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9466: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #0 (ex_style = 0, style = 0x2000000, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #1 (ex_style = 0, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9467: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9467: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9467: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9467: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9467: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9467: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #0 (ex_style = 0, style = 0x2000000, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #1 (ex_style = 0, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9468: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9468: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9468: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9468: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9468: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9468: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #0 (ex_style = 0, style = 0x2000000, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #1 (ex_style = 0, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9469: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9469: SetWindowPos redraw #2 (ex_style = 0x2000000, style = 0x2000000, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9469: SetWindowPos redraw #3 (ex_style = 0x2000000, style = 0, shuffle_zorder = 0): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Parent update region shall match expected region msg.c:9419: Test failed: 9469: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = -20: Child update region shall match expected region msg.c:9358: Test failed: 9469: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Parent update region shall match expected region msg.c:9419: Test failed: 9469: SetWindowPos redraw #4 (ex_style = 0x2000000, style = 0, shuffle_zorder = 1): delta = +0: Child update region shall match expected region msg.c:9509: Test failed: GetRgnBox (on parent) returned 1 msg.c:9513: Test failed: parent update region: got (0,0)-(0,0), expected (10,10)-(100,100) msg.c:9546: Test failed: GetRgnBox (on parent) returned 1 msg.c:9550: Test failed: parent update region: got (0,0)-(0,0), expected (20,20)-(120,120) msg.c:9603: Test failed: GetRgnBox (on parent) returned 1 msg.c:9607: Test failed: parent update region: got (0,0)-(0,0), expected (10,10)-(100,100) msg.c:10126: Test failed: destroy child on thread exit: 1: the msg sequence is not complete: expected msg 000f - actual msg 0000 msg.c:12964: Test failed: WmDispatchPaint: 1: the msg sequence is not complete: expected msg 0014 - actual msg 0000 msg.c:12984: Test failed: WmDispatchPaint: 1: the msg sequence is not complete: expected msg 0014 - actual msg 0000 sysparams.c:3603: Test failed: 0/0: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 0/1: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 0/2: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 1/0: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 1/1: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 1/2: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 2/0: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 2/1: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) sysparams.c:3603: Test failed: 2/2: wrong clip box (197,207)-(287,269) expected (0,0)-(287,269) win.c:1542: Test failed: Expected color 0xc0c0c0, got 0xffffffff. win.c:1581: Test failed: Got unexpected color 0xffffffff. win: Timeout
Report validation errors: user32:msg prints too much data (67678 bytes)
Fwiw wrt winewayland window data, it was probably intentionally isolated and private to the window code, and I intend to move it back to the window source after previous surface re-use is moved to win32u.