[PATCH v3] winemac: Handle dummy_surface in get_mac_surface.

Ken Thomases ken at codeweavers.com
Wed Mar 11 14:45:54 CDT 2020


From: Piotr Caban <piotr at codeweavers.com>

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Ken Thomases <ken at 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)
-- 
2.21.0




More information about the wine-devel mailing list