From 519a44d2242c281fb8fd58dbc65456a53428d07d Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Sat, 29 Jan 2022 17:05:48 -0800 Subject: [PATCH] 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);