macos: check for destroyed surfaces in vfuncs
authorChristian Hergert <chergert@redhat.com>
Mon, 31 Jan 2022 21:02:58 +0000 (13:02 -0800)
committerChristian Hergert <christian@hergert.me>
Fri, 4 Feb 2022 03:26:16 +0000 (19:26 -0800)
gdk/macos/gdkmacossurface.c

index a6a354cab71c69a4894950004cfd43bc57b864d4..19a4453212223ad2a209b77d4981f0b2ce119c41 100644 (file)
@@ -190,6 +190,9 @@ gdk_macos_surface_end_frame (GdkMacosSurface *self)
 
   g_assert (GDK_IS_MACOS_SURFACE (self));
 
+  if (GDK_SURFACE_DESTROYED (self))
+    return;
+
   display = gdk_surface_get_display (GDK_SURFACE (self));
   frame_clock = gdk_surface_get_frame_clock (GDK_SURFACE (self));
 
@@ -208,10 +211,11 @@ gdk_macos_surface_before_paint (GdkMacosSurface *self,
   g_assert (GDK_IS_MACOS_SURFACE (self));
   g_assert (GDK_IS_FRAME_CLOCK (frame_clock));
 
-  if (surface->update_freeze_count > 0)
+  if (GDK_SURFACE_DESTROYED (self))
     return;
 
-  gdk_macos_surface_begin_frame (self);
+  if (surface->update_freeze_count == 0)
+    gdk_macos_surface_begin_frame (self);
 }
 
 static void
@@ -223,10 +227,11 @@ gdk_macos_surface_after_paint (GdkMacosSurface *self,
   g_assert (GDK_IS_MACOS_SURFACE (self));
   g_assert (GDK_IS_FRAME_CLOCK (frame_clock));
 
-  if (surface->update_freeze_count > 0)
+  if (GDK_SURFACE_DESTROYED (self))
     return;
 
-  gdk_macos_surface_end_frame (self);
+  if (surface->update_freeze_count == 0)
+    gdk_macos_surface_end_frame (self);
 }
 
 static void