summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-10-23 17:03:00 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-10-23 17:03:00 -0400
commitc5ed5c5ff995f504de964fa1bc8472a4f670757f (patch)
treedd63cc7ea6d82f202ebe26bce40df046dcb90a9d
parent6b53a55dd7fc6f1e46262625d6852568563a00ae (diff)
downloadgtk+-flush-events.tar.gz
gdk: Deliver queued events on flushflush-events
The current code was marking queued events as flushed, but left them in the queue. That doesn't make sense to me - we should deliver all events we have before we reach the paint phase of the frame cycle.
-rw-r--r--gdk/gdkevents.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index c768d22f23..9cfefd0d39 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -814,12 +814,17 @@ _gdk_event_queue_handle_motion_compression (GdkDisplay *display)
void
_gdk_event_queue_flush (GdkDisplay *display)
{
- GList *tmp_list;
-
- for (tmp_list = display->queued_events.head; tmp_list; tmp_list = tmp_list->next)
+ while (TRUE)
{
- GdkEvent *event = tmp_list->data;
+ GdkEvent *event;
+
+ event = (GdkEvent *)g_queue_pop_head (&display->queued_events);
+ if (!event)
+ return;
+
event->flags |= GDK_EVENT_FLUSHED;
+ _gdk_event_emit (event);
+ gdk_event_unref (event);
}
}