diff options
author | Marek Kasik <mkasik@redhat.com> | 2013-12-18 18:28:39 +0100 |
---|---|---|
committer | Marek Kasik <mkasik@redhat.com> | 2013-12-18 18:29:33 +0100 |
commit | 090159cec92921182f8eeb59762ceba11c1581f4 (patch) | |
tree | 26c90b94f8ddbcfa15f41d8e5c58fa84641bcec0 | |
parent | c212cb8f32c02cf2fe691372b753d334f6e25d69 (diff) | |
download | gtk+-090159cec92921182f8eeb59762ceba11c1581f4.tar.gz |
gdkwindow: Don't add the same window to "update_windows" twice
This prevents passing of such window to another GMainLoop.
https://bugzilla.gnome.org/show_bug.cgi?id=711552
-rw-r--r-- | gdk/gdkwindow.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 0f33fb0fa3..153144a95e 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -5242,6 +5242,15 @@ gdk_window_add_update_window (GdkWindow *window) GSList *prev = NULL; gboolean has_ancestor_in_list = FALSE; + /* Check whether "window" is already in "update_windows" list. + * It could be added during execution of gtk_widget_destroy() when + * setting focus widget to NULL and redrawing old focus widget. + * See bug 711552. + */ + tmp = g_slist_find (update_windows, window); + if (tmp != NULL) + return; + for (tmp = update_windows; tmp; tmp = tmp->next) { GdkWindowObject *parent = GDK_WINDOW_OBJECT (window)->parent; |