From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winemac.drv/surface.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/dlls/winemac.drv/surface.c b/dlls/winemac.drv/surface.c index 83f6df62c80..c16acfe9905 100644 --- a/dlls/winemac.drv/surface.c +++ b/dlls/winemac.drv/surface.c @@ -191,29 +191,17 @@ failed: */ BOOL macdrv_CreateWindowSurface(HWND hwnd, const RECT *surface_rect, struct window_surface **surface) { + struct window_surface *previous; struct macdrv_win_data *data;
TRACE("hwnd %p, surface_rect %s, surface %p\n", hwnd, wine_dbgstr_rect(surface_rect), surface);
+ if ((previous = *surface) && previous->funcs == &macdrv_surface_funcs) return TRUE; if (!(data = get_win_data(hwnd))) return TRUE; /* use default surface */ - - if (*surface) window_surface_release(*surface); - *surface = NULL; - - 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; - } - } + if (previous) window_surface_release(previous);
*surface = create_surface(data->hwnd, data->cocoa_window, surface_rect);
-done: release_win_data(data); return TRUE; }