diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-10-23 17:03:00 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-10-23 17:03:00 -0400 |
commit | c5ed5c5ff995f504de964fa1bc8472a4f670757f (patch) | |
tree | dd63cc7ea6d82f202ebe26bce40df046dcb90a9d | |
parent | 6b53a55dd7fc6f1e46262625d6852568563a00ae (diff) | |
download | gtk+-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.c | 13 |
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); } } |