From: Piotr Caban piotr@codeweavers.com
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Ken Thomases ken@codeweavers.com --- Supersedes 180680
v3: Check for non-Mac-driver surface in surface_clip_to_visible_rect(), too.
dlls/winemac.drv/surface.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/winemac.drv/surface.c b/dlls/winemac.drv/surface.c index 9850c92aaa1..85ff56c9578 100644 --- a/dlls/winemac.drv/surface.c +++ b/dlls/winemac.drv/surface.c @@ -70,10 +70,7 @@ struct macdrv_window_surface BITMAPINFO info; /* variable size, must be last */ };
-static struct macdrv_window_surface *get_mac_surface(struct window_surface *surface) -{ - return (struct macdrv_window_surface *)surface; -} +static struct macdrv_window_surface *get_mac_surface(struct window_surface *surface);
/*********************************************************************** * update_blit_data @@ -227,6 +224,12 @@ static const struct window_surface_funcs macdrv_surface_funcs = macdrv_surface_destroy, };
+static struct macdrv_window_surface *get_mac_surface(struct window_surface *surface) +{ + if (!surface || surface->funcs != &macdrv_surface_funcs) return NULL; + return (struct macdrv_window_surface *)surface; +} + /*********************************************************************** * create_surface */ @@ -311,7 +314,7 @@ failed: void set_surface_use_alpha(struct window_surface *window_surface, BOOL use_alpha) { struct macdrv_window_surface *surface = get_mac_surface(window_surface); - surface->use_alpha = use_alpha; + if (surface) surface->use_alpha = use_alpha; }
/*********************************************************************** @@ -424,6 +427,7 @@ void surface_clip_to_visible_rect(struct window_surface *window_surface, const R { struct macdrv_window_surface *surface = get_mac_surface(window_surface);
+ if (!surface) return; window_surface->funcs->lock(window_surface);
if (surface->drawn)