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
This commit is contained in:
Marek Kasik 2013-12-18 12:23:28 +01:00
parent 3dab856103
commit ccd6e1ba47

View File

@ -3227,6 +3227,15 @@ gdk_window_add_update_window (GdkWindow *window)
GSList *prev = NULL; GSList *prev = NULL;
gboolean has_ancestor_in_list = FALSE; 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) for (tmp = update_windows; tmp; tmp = tmp->next)
{ {
GdkWindow *parent = window->parent; GdkWindow *parent = window->parent;