Free the translate queue when closing a display

Not that many people are ever going to hit this.
https://bugzilla.gnome.org/show_bug.cgi?id=645236
This commit is contained in:
Matthias Clasen 2011-04-08 21:34:25 -04:00
parent 9e6d3d969c
commit fbf1093d5c
3 changed files with 18 additions and 0 deletions

View File

@ -1729,6 +1729,9 @@ gdk_x11_display_finalize (GObject *object)
_gdk_x11_cursor_display_finalize (GDK_DISPLAY (display_x11));
/* Empty the event queue */
_gdk_x11_display_free_translate_queue (GDK_DISPLAY (display_x11));
/* Atom Hashtable */
g_hash_table_destroy (display_x11->atom_from_virtual);
g_hash_table_destroy (display_x11->atom_to_virtual);

View File

@ -153,6 +153,19 @@ queue_item_free (GdkWindowQueueItem *item)
g_free (item);
}
void
_gdk_x11_display_free_translate_queue (GdkDisplay *display)
{
GdkX11Display *display_x11 = GDK_X11_DISPLAY (display);
if (display_x11->translate_queue)
{
g_queue_foreach (display_x11->translate_queue, (GFunc)queue_item_free, NULL);
g_queue_free (display_x11->translate_queue);
display_x11->translate_queue = NULL;
}
}
static void
gdk_window_queue (GdkWindow *window,
GdkWindowQueueItem *item)

View File

@ -138,6 +138,8 @@ void _gdk_x11_window_translate (GdkWindow *window,
gint dx,
gint dy);
void _gdk_x11_display_free_translate_queue (GdkDisplay *display);
void _gdk_x11_selection_window_destroyed (GdkWindow *window);
gboolean _gdk_x11_selection_filter_clear_event (XSelectionClearEvent *event);