mutter/mutter-dont-overwrite-send_frame_messages_timer.patch

30 lines
1.2 KiB
Diff
Raw Normal View History

From 56e74b1ea8ae37b88ba4b48388cd582d77c9dd91 Mon Sep 17 00:00:00 2001
From: "Owen W. Taylor" <otaylor@fishsoup.net>
Date: Fri, 17 Oct 2014 08:58:28 -0400
Subject: MetaWindowActor: don't overwrite send_frame_messages_timer
If the app finished multiple frames before we sent _NET_WM_FRAME_DRAWN,
we could add the send_frame_messages_timer multiple times. In the rare
case that the app immediately closed the window, the older timeout
could potentially then run on the freed actor.
https://bugzilla.gnome.org/show_bug.cgi?id=738686
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 254a1a9..3d6fab1 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -939,6 +939,10 @@ static void
queue_send_frame_messages_timeout (MetaWindowActor *self)
{
MetaWindowActorPrivate *priv = self->priv;
+
+ if (priv->send_frame_messages_timer != 0)
+ return;
+
MetaDisplay *display = meta_window_get_display (priv->window);
gint64 current_time = meta_compositor_monotonic_time_to_server_time (display, g_get_monotonic_time ());
MetaMonitorManager *monitor_manager = meta_monitor_manager_get ();
--
cgit v0.10.1