summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-09-24 20:20:08 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-09-24 20:20:08 +0000
commitf9d267ae80e7f423cc206b89a476d29f5eaa1320 (patch)
treed2d4579c4456957aad55b09a2ebb49201b8141d3
parented737365c9d2b373b923571b606d6eb209d2e7ee (diff)
downloadgtk+-f9d267ae80e7f423cc206b89a476d29f5eaa1320.tar.gz
Delete unused private gdk_visual_lookup(), make gdk_colormap_lookup()
Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com> * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c gdkwindow-x11.c: Delete unused private gdk_visual_lookup(), make gdk_colormap_lookup() private gdkcolor-x11.c. make gdk_window_add_colormap_windows private to gdkwindow-x11.c (#85674) * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(), GDK_ENABLE_BROKEN gdkx_colormap_get(), make the colormap hash per-screen. (#85697) * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display): Remove a bit of unecessary code.
-rw-r--r--ChangeLog16
-rw-r--r--ChangeLog.pre-2-1016
-rw-r--r--ChangeLog.pre-2-216
-rw-r--r--ChangeLog.pre-2-416
-rw-r--r--ChangeLog.pre-2-616
-rw-r--r--ChangeLog.pre-2-816
-rw-r--r--gdk/x11/gdkcolor-x11.c174
-rw-r--r--gdk/x11/gdkprivate-x11.h5
-rw-r--r--gdk/x11/gdkscreen-x11.c1
-rw-r--r--gdk/x11/gdkscreen-x11.h1
-rw-r--r--gdk/x11/gdkvisual-x11.c11
-rw-r--r--gdk/x11/gdkwindow-x11.c3
-rw-r--r--gdk/x11/gdkx.h10
-rw-r--r--gdk/x11/gdkxid.c7
14 files changed, 224 insertions, 84 deletions
diff --git a/ChangeLog b/ChangeLog
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index b3bafcfc27..aec036ede3 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,19 @@
+Tue Sep 24 16:04:44 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gdkprivate-x11.h gdkcolor-x11.c gdkvisual-x11.c
+ gdkwindow-x11.c: Delete unused private gdk_visual_lookup(),
+ make gdk_colormap_lookup() private gdkcolor-x11.c.
+ make gdk_window_add_colormap_windows private to gdkwindow-x11.c
+ (#85674)
+
+ * gdk/x11/gdkx.h gdk/x11/gdkcolor-x11.c
+ gdkscreen-x11.h: Add gdk_x11_colormap_foreign_new(),
+ GDK_ENABLE_BROKEN gdkx_colormap_get(), make the
+ colormap hash per-screen. (#85697)
+
+ * gdk/x11/gdkxid.c (gdk_xid_table_lookup_for_display):
+ Remove a bit of unecessary code.
+
Thu Aug 8 16:58:22 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkspinbutton.c (gtk_spin_button_real_change_value):
diff --git a/gdk/x11/gdkcolor-x11.c b/gdk/x11/gdkcolor-x11.c
index 54f07681ab..d46692719d 100644
--- a/gdk/x11/gdkcolor-x11.c
+++ b/gdk/x11/gdkcolor-x11.c
@@ -44,6 +44,8 @@ struct _GdkColormapPrivateX11
GHashTable *hash;
GdkColorInfo *info;
time_t last_sync_time;
+
+ guint foreign : 1;
};
#define GDK_COLORMAP_PRIVATE_DATA(cmap) ((GdkColormapPrivateX11 *) GDK_COLORMAP (cmap)->windowing_data)
@@ -53,6 +55,10 @@ static gint gdk_colormap_match_color (GdkColormap *cmap,
const gchar *available);
static void gdk_colormap_add (GdkColormap *cmap);
static void gdk_colormap_remove (GdkColormap *cmap);
+
+static GdkColormap *gdk_colormap_lookup (GdkScreen *screen,
+ Colormap xcolormap);
+
static guint gdk_colormap_hash (Colormap *cmap);
static gboolean gdk_colormap_equal (Colormap *a,
Colormap *b);
@@ -65,8 +71,6 @@ static void gdk_colormap_finalize (GObject *object);
static gpointer parent_class = NULL;
-static GHashTable *colormap_hash = NULL;
-
GType
gdk_colormap_get_type (void)
{
@@ -161,7 +165,7 @@ gdk_colormap_new (GdkVisual *visual,
g_return_val_if_fail (visual != NULL, NULL);
- colormap = g_object_new (gdk_colormap_get_type (), NULL);
+ colormap = g_object_new (GDK_TYPE_COLORMAP, NULL);
private = GDK_COLORMAP_PRIVATE_DATA (colormap);
colormap->visual = visual;
@@ -374,7 +378,7 @@ gdk_screen_get_system_colormap (GdkScreen *screen)
if (screen_x11->system_colormap)
return screen_x11->system_colormap;
- colormap = g_object_new (gdk_colormap_get_type (), NULL);
+ colormap = g_object_new (GDK_TYPE_COLORMAP, NULL);
private = GDK_COLORMAP_PRIVATE_DATA (colormap);
private->screen = screen;
@@ -1140,65 +1144,112 @@ gdk_color_change (GdkColormap *colormap,
return TRUE;
}
-/* XXX: Do not use this function until it is fixed. An X Colormap
- * is useless unless we also have the visual.
- */
-GdkColormap*
-gdkx_colormap_get (Colormap xcolormap)
+/**
+ * gdk_x11_colormap_foreign_new:
+ * @visual: a #GdkVisual
+ * @xcolormap: The XID of a colormap with visual @visual
+ *
+ * If xcolormap refers to a colormap previously known to GTK+,
+ * returns a new reference to the existing #GdkColormap object,
+ * otherwise creates a new GdkColormap object and returns that
+ *
+ * Return value: the #GdkColormap object for @xcolormap.
+ * Free with g_object_unref(). Note that for colormap created
+ * with gdk_x11_colormap_foreign_new(), unref'ing the last
+ * reference to the object will only free the #GdkColoramp
+ * object and not call XFreeColormap()
+ **/
+GdkColormap *
+gdk_x11_colormap_foreign_new (GdkVisual *visual,
+ Colormap xcolormap)
{
GdkColormap *colormap;
-#if 0
+ GdkScreen *screen;
GdkColormapPrivateX11 *private;
+
+ g_return_val_if_fail (GDK_IS_VISUAL (visual), NULL);
+ g_return_val_if_fail (xcolormap != None, NULL);
- colormap = gdk_colormap_lookup (xcolormap);
- if (colormap)
- return colormap;
+ screen = gdk_visual_get_screen (visual);
+
+ if (xcolormap == DefaultColormap (GDK_SCREEN_XDISPLAY (screen),
+ GDK_SCREEN_XNUMBER (screen)));
+ return g_object_ref (gdk_screen_get_system_colormap (screen));
- if (xcolormap == DefaultColormap (gdk_display, _gdk_screen))
- return gdk_colormap_get_system ();
+ colormap = gdk_colormap_lookup (screen, xcolormap);
+ if (colormap)
+ return g_object_ref (colormap);
- colormap = g_object_new (gdk_colormap_get_type (), NULL);
+ colormap = g_object_new (GDK_TYPE_COLORMAP, NULL);
private = GDK_COLORMAP_PRIVATE_DATA (colormap);
- private->xdisplay = gdk_display;
- private->xcolormap = xcolormap;
- colormap->visual = NULL;
- private->private_val = TRUE;
-#endif
-
- /* To do the following safely, we would have to have some way of finding
- * out what the size or visual of the given colormap is. It seems
- * X doesn't allow this
- */
+ colormap->visual = visual;
-#if 0
- for (i = 0; i < 256; i++)
- {
- xpalette[i].pixel = i;
- xpalette[i].red = 0;
- xpalette[i].green = 0;
- xpalette[i].blue = 0;
- }
+ private->screen = screen;
+ private->xcolormap = xcolormap;
+ private->xdisplay = GDK_SCREEN_XDISPLAY (screen);
+ private->private_val = FALSE;
- XQueryColors (gdk_display, private->xcolormap, xpalette, 256);
+ colormap->size = visual->colormap_size;
- for (i = 0; i < 256; i++)
+ switch (colormap->visual->type)
{
- colormap->colors[i].pixel = xpalette[i].pixel;
- colormap->colors[i].red = xpalette[i].red;
- colormap->colors[i].green = xpalette[i].green;
- colormap->colors[i].blue = xpalette[i].blue;
+ case GDK_VISUAL_GRAYSCALE:
+ case GDK_VISUAL_PSEUDO_COLOR:
+ private->info = g_new0 (GdkColorInfo, colormap->size);
+ private->hash = g_hash_table_new ((GHashFunc) gdk_color_hash,
+ (GEqualFunc) gdk_color_equal);
+ /* Fall through */
+ case GDK_VISUAL_STATIC_GRAY:
+ case GDK_VISUAL_STATIC_COLOR:
+ case GDK_VISUAL_DIRECT_COLOR:
+ colormap->colors = g_new (GdkColor, colormap->size);
+ gdk_colormap_sync (colormap, TRUE);
+
+ case GDK_VISUAL_TRUE_COLOR:
+ break;
}
-#endif
-
- colormap->colors = NULL;
- colormap->size = 0;
gdk_colormap_add (colormap);
return colormap;
+
}
+/**
+ * gdkx_colormap_get:
+ * @xcolormap: the XID of a colormap for the default screen.
+ *
+ * Returns a #GdkColormap corresponding to a X colormap;
+ * this function only works if the colormap is already
+ * known to GTK+ (a colormap created by GTK+ or the default
+ * colormap for the screen), since GTK+
+ *
+ * Always use gdk_x11_colormap_foreign_new() instead.
+ *
+ * Return value: the existing #GdkColormap object if it was
+ * already known to GTK+, otherwise warns and return
+ * %NULL.
+ **/
+GdkColormap*
+gdkx_colormap_get (Colormap xcolormap)
+{
+ GdkScreen *screen = gdk_screen_get_default ();
+ GdkColormap *colormap;
+
+ if (xcolormap == DefaultColormap (GDK_SCREEN_XDISPLAY (screen),
+ GDK_SCREEN_XNUMBER (screen)));
+ return g_object_ref (gdk_screen_get_system_colormap (screen));
+
+ colormap = gdk_colormap_lookup (screen, xcolormap);
+ if (colormap)
+ return g_object_ref (colormap);
+
+ g_warning ("Colormap passed to gdkx_colormap_get\n"
+ "does not previously exist");
+
+ return NULL;
+}
static gint
gdk_colormap_match_color (GdkColormap *cmap,
@@ -1239,46 +1290,51 @@ gdk_colormap_match_color (GdkColormap *cmap,
}
-GdkColormap*
-gdk_colormap_lookup (Colormap xcolormap)
+static GdkColormap*
+gdk_colormap_lookup (GdkScreen *screen,
+ Colormap xcolormap)
{
- GdkColormap *cmap;
+ GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen);
- if (!colormap_hash)
+ if (screen_x11->colormap_hash)
+ return g_hash_table_lookup (screen_x11->colormap_hash, &xcolormap);
+ else
return NULL;
-
- cmap = g_hash_table_lookup (colormap_hash, &xcolormap);
- return cmap;
}
static void
gdk_colormap_add (GdkColormap *cmap)
{
+ GdkScreenX11 *screen_x11;
GdkColormapPrivateX11 *private;
- if (!colormap_hash)
- colormap_hash = g_hash_table_new ((GHashFunc) gdk_colormap_hash,
- (GEqualFunc) gdk_colormap_equal);
-
private = GDK_COLORMAP_PRIVATE_DATA (cmap);
+ screen_x11 = GDK_SCREEN_X11 (private->screen);
- g_hash_table_insert (colormap_hash, &private->xcolormap, cmap);
+ if (!screen_x11->colormap_hash)
+ screen_x11->colormap_hash = g_hash_table_new ((GHashFunc) gdk_colormap_hash,
+ (GEqualFunc) gdk_colormap_equal);
+
+ g_hash_table_insert (screen_x11->colormap_hash, &private->xcolormap, cmap);
}
static void
gdk_colormap_remove (GdkColormap *cmap)
{
+ GdkScreenX11 *screen_x11;
GdkColormapPrivateX11 *private;
private = GDK_COLORMAP_PRIVATE_DATA (cmap);
+ screen_x11 = GDK_SCREEN_X11 (private->screen);
- g_hash_table_remove (colormap_hash, &private->xcolormap);
+ if (screen_x11->colormap_hash)
+ g_hash_table_remove (screen_x11->colormap_hash, &private->xcolormap);
}
static guint
-gdk_colormap_hash (Colormap *cmap)
+gdk_colormap_hash (Colormap *colormap)
{
- return *cmap;
+ return *colormap;
}
static gboolean
diff --git a/gdk/x11/gdkprivate-x11.h b/gdk/x11/gdkprivate-x11.h
index 38dc7c9c92..2e66abc693 100644
--- a/gdk/x11/gdkprivate-x11.h
+++ b/gdk/x11/gdkprivate-x11.h
@@ -116,11 +116,6 @@ GdkGC *_gdk_x11_gc_new (GdkDrawable *drawable,
GdkGCValues *values,
GdkGCValuesMask values_mask);
-GdkColormap * gdk_colormap_lookup (Colormap xcolormap);
-GdkVisual * gdk_visual_lookup (Visual *xvisual);
-
-void gdk_window_add_colormap_windows (GdkWindow *window);
-
GdkImage *_gdk_x11_copy_to_image (GdkDrawable *drawable,
GdkImage *image,
gint src_x,
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 9e0d18996f..855a06e7cb 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -264,6 +264,7 @@ gdk_screen_x11_finalize (GObject *object)
g_object_unref (G_OBJECT (screen_x11->visuals[i]));*/
g_free (screen_x11->visuals);
g_hash_table_destroy (screen_x11->visual_hash);
+ g_hash_table_destroy (screen_x11->colormap_hash);
/* X settings */
g_free (screen_x11->xsettings_client);
diff --git a/gdk/x11/gdkscreen-x11.h b/gdk/x11/gdkscreen-x11.h
index 2575f0def0..b6f2531418 100644
--- a/gdk/x11/gdkscreen-x11.h
+++ b/gdk/x11/gdkscreen-x11.h
@@ -64,6 +64,7 @@ struct _GdkScreenX11
GdkVisualType available_types[6];
gint navailable_types;
GHashTable *visual_hash;
+ GHashTable *colormap_hash;
/* Colormap Part */
GdkColormap *default_colormap;
diff --git a/gdk/x11/gdkvisual-x11.c b/gdk/x11/gdkvisual-x11.c
index 9f22260e82..f9d1ffd7de 100644
--- a/gdk/x11/gdkvisual-x11.c
+++ b/gdk/x11/gdkvisual-x11.c
@@ -536,17 +536,6 @@ gdk_screen_list_visuals (GdkScreen *screen)
return list;
}
-GdkVisual*
-gdk_visual_lookup (Visual *xvisual)
-{
- GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (gdk_screen_get_default ());
-
- if (!screen_x11->visual_hash)
- return NULL;
-
- return g_hash_table_lookup (screen_x11->visual_hash, xvisual);
-}
-
/**
* gdkx_visual_get_for_screen:
* @screen: a #GdkScreen.
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 08d22701fe..9291a8ebaa 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -82,6 +82,7 @@ static void gdk_window_set_static_win_gravity (GdkWindow *window,
gboolean on);
static gboolean gdk_window_have_shape_ext (GdkDisplay *display);
static gboolean gdk_window_icon_name_set (GdkWindow *window);
+static void gdk_window_add_colormap_windows (GdkWindow *window);
static GdkColormap* gdk_window_impl_x11_get_colormap (GdkDrawable *drawable);
static void gdk_window_impl_x11_set_colormap (GdkDrawable *drawable,
@@ -2621,7 +2622,7 @@ gdk_window_set_events (GdkWindow *window,
}
}
-void
+static void
gdk_window_add_colormap_windows (GdkWindow *window)
{
GdkWindow *toplevel;
diff --git a/gdk/x11/gdkx.h b/gdk/x11/gdkx.h
index e279d3350d..8f088fffbb 100644
--- a/gdk/x11/gdkx.h
+++ b/gdk/x11/gdkx.h
@@ -122,11 +122,15 @@ GdkVisual* gdkx_visual_get_for_screen (GdkScreen *screen,
GdkVisual* gdkx_visual_get (VisualID xvisualid);
#endif
-/* XXX: Do not use this function until it is fixed. An X Colormap
- * is useless unless we also have the visual. */
+#ifdef GDK_ENABLE_BROKEN
+/* XXX: An X Colormap is useless unless we also have the visual. */
GdkColormap* gdkx_colormap_get (Colormap xcolormap);
+#endif
+
+GdkColormap *gdk_x11_colormap_foreign_new (GdkVisual *visual,
+ Colormap xcolormap)
-/* Return the Gdk* for a particular XID */
+ /* Return the Gdk* for a particular XID */
gpointer gdk_xid_table_lookup_for_display (GdkDisplay *display,
XID xid);
guint32 gdk_x11_get_server_time (GdkWindow *window);
diff --git a/gdk/x11/gdkxid.c b/gdk/x11/gdkxid.c
index 751cf50eb6..1150e66fd6 100644
--- a/gdk/x11/gdkxid.c
+++ b/gdk/x11/gdkxid.c
@@ -62,11 +62,8 @@ _gdk_xid_table_remove (GdkDisplay *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);
-
- g_hash_table_remove (display_x11->xid_ht, &xid);
+ if (display_x11->xid_ht)
+ g_hash_table_remove (display_x11->xid_ht, &xid);
}
/**