macos: clear window stack before requesting motion
authorChristian Hergert <christian@hergert.me>
Wed, 2 Mar 2022 09:04:53 +0000 (01:04 -0800)
committerChristian Hergert <christian@hergert.me>
Wed, 2 Mar 2022 09:04:53 +0000 (01:04 -0800)
We want to ensure that we recalculate the sort order of windows before
processing the motion. Generally this would be done in response from the
display server in GdkMacosWindow, but I've seen it possible to race there.

gdk/macos/gdkmacossurface.c

index add5f15db7673f7f5cf5459df4b7a6cc4eef783c..f6140deafae000bc7592f8ec9e1cdae3207810cc 100644 (file)
@@ -1270,11 +1270,15 @@ _gdk_macos_surface_get_buffer (GdkMacosSurface *self)
 static void
 _gdk_macos_surface_do_delayed_show (GdkMacosSurface *self)
 {
+  GdkSurface *surface = (GdkSurface *)self;
+
   g_assert (GDK_IS_MACOS_SURFACE (self));
 
   self->show_on_next_swap = FALSE;
   [self->window showAndMakeKey:YES];
-  gdk_surface_request_motion (GDK_SURFACE (self));
+
+  _gdk_macos_display_clear_sorting (GDK_MACOS_DISPLAY (surface->display));
+  gdk_surface_request_motion (surface);
 }
 
 void