[gtk/wip/chergert/macos-fixes: 3/4] macos: push to head of awaiting frames




commit 3b72aa1fe9b5f514f103834236bbb0b56f8197e4
Author: Christian Hergert <christian hergert me>
Date:   Sat Jan 29 17:05:48 2022 -0800

    macos: push to head of awaiting frames
    
    Always add to the head of awaiting frames as the list is processed
    in the opposite direction.

 gdk/macos/gdkmacosdisplay.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
---
diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c
index 051a921903..9507d65c88 100644
--- a/gdk/macos/gdkmacosdisplay.c
+++ b/gdk/macos/gdkmacosdisplay.c
@@ -987,7 +987,11 @@ _gdk_macos_display_add_frame_callback (GdkMacosDisplay *self,
 
   if (!queue_contains (&self->awaiting_frames, &surface->frame))
     {
-      g_queue_push_tail_link (&self->awaiting_frames, &surface->frame);
+      /* Processing frames is always head to tail, so push to the
+       * head so that we don't possibly re-enter this right after
+       * adding to the queue.
+       */
+      g_queue_push_head_link (&self->awaiting_frames, &surface->frame);
 
       if (self->awaiting_frames.length == 1)
         gdk_display_link_source_unpause ((GdkDisplayLinkSource *)self->frame_source);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]