Add diagnostics for XID collisions

This should help with diagnosing crashes caused by over-eager XID
reuse in Xlib, see bug 581526.
This commit is contained in:
Matthias Clasen 2009-05-05 19:29:05 -04:00
parent a398c840be
commit 6fc6b8b4e8

View File

@ -47,16 +47,19 @@ _gdk_xid_table_insert (GdkDisplay *display,
gpointer data)
{
GdkDisplayX11 *display_x11;
g_return_if_fail (xid != NULL);
g_return_if_fail (GDK_IS_DISPLAY (display));
display_x11 = GDK_DISPLAY_X11 (display);
if (!display_x11->xid_ht)
display_x11->xid_ht = g_hash_table_new ((GHashFunc) gdk_xid_hash,
(GEqualFunc) gdk_xid_equal);
if (g_hash_table_lookup (display_x11->xid_ht, xid))
g_warning ("XID collision, trouble ahead");
g_hash_table_insert (display_x11->xid_ht, xid, data);
}
@ -65,11 +68,11 @@ _gdk_xid_table_remove (GdkDisplay *display,
XID xid)
{
GdkDisplayX11 *display_x11;
g_return_if_fail (GDK_IS_DISPLAY (display));
display_x11 = GDK_DISPLAY_X11 (display);
if (display_x11->xid_ht)
g_hash_table_remove (display_x11->xid_ht, &xid);
}