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 <chergert@redhat.com>
Wed, 16 Mar 2022 19:25:10 +0000 (12:25 -0700)
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 4357fbf1a9a1be573b3d4637d192f5342b083aff..6c116ed8178581679c414802b59ea0cacba73646 100644 (file)
@@ -1244,11 +1244,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