+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
+Mon Nov 25 17:44:09 2002 Owen Taylor <otaylor@redhat.com>
+
+ Fixes from #98358, Havoc Pennington.
+
+ * gdk/{x11,win32,linux-fb}/gdkcolor-*.c (gdk_colormap_finalize):
+ Free the private structure.
+
+ * gdk/x11,win32,linxu-fb}/gdkscreen-*.c (gdk_screen_set_default_colormap):
+ gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Keep a ref to the default colormap.
+
+ * gdk/x11/gdkscreen-x11.c (gdk_screen_x11_dispose): Unref
+ the default colormap.
+
+ * gdk/x11/gdkwindow-x11.c (gdk_window_impl_x11_set_colormap):
+ Handle the CMAP == NULL case even when the window is
+ destroyed.
+
+ * gdk/x11/gdkwindow-x11.c (_gdk_windowing_window_init):
+ Add a missing ref for the system colormap.
+
Mon Nov 25 17:10:54 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtksettings.c (gtk_settings_set_property_value):
g_free (private->info);
g_free (colormap->colors);
+ g_free (private);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
gdk_screen_set_default_colormap (GdkScreen *screen,
GdkColormap *colormap)
{
- default_colormap = colormap;
+ GdkColormap *old_colormap;
+
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+ g_return_if_fail (GDK_IS_COLORMAP (colormap));
+
+ old_colormap = default_colormap;
+
+ default_colormap = g_object_ref (colormap);
+
+ if (old_colormap)
+ g_object_unref (old_colormap);
}
int
g_free (private->info);
g_free (colormap->colors);
+ g_free (private);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
gdk_screen_set_default_colormap (GdkScreen *screen,
GdkColormap *colormap)
{
- default_colormap = colormap;
+ GdkColormap *old_colormap;
+
+ g_return_if_fail (GDK_IS_SCREEN (screen));
+ g_return_if_fail (GDK_IS_COLORMAP (colormap));
+
+ old_colormap = default_colormap;
+
+ default_colormap = g_object_ref (colormap);
+
+ if (old_colormap)
+ g_object_unref (old_colormap);
}
gint
g_free (private->info);
g_free (colormap->colors);
+ g_free (private);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
gdk_screen_set_default_colormap (GdkScreen *screen,
GdkColormap *colormap)
{
+ GdkColormap *old_colormap;
+
g_return_if_fail (GDK_IS_SCREEN (screen));
g_return_if_fail (GDK_IS_COLORMAP (colormap));
+
+ old_colormap = GDK_SCREEN_X11 (screen)->default_colormap;
+
+ GDK_SCREEN_X11 (screen)->default_colormap = g_object_ref (colormap);
- GDK_SCREEN_X11 (screen)->default_colormap = colormap;
+ if (old_colormap)
+ g_object_unref (old_colormap);
}
static void
GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (object);
_gdk_x11_events_uninit_screen (GDK_SCREEN (object));
+
+ g_object_unref (screen_x11->default_colormap);
+ screen_x11->default_colormap = NULL;
screen_x11->root_window = NULL;
impl = GDK_WINDOW_IMPL_X11 (drawable);
draw_impl = GDK_DRAWABLE_IMPL_X11 (drawable);
- if (GDK_WINDOW_DESTROYED (draw_impl->wrapper))
+ if (cmap && GDK_WINDOW_DESTROYED (draw_impl->wrapper))
return;
/* chain up */
g_assert (screen_x11->root_window == NULL);
- screen_x11->default_colormap = gdk_screen_get_system_colormap (screen);
+ gdk_screen_set_default_colormap (screen,
+ gdk_screen_get_system_colormap (screen));
XGetGeometry (screen_x11->xdisplay, screen_x11->xroot_window,
&screen_x11->xroot_window, &x, &y, &width, &height, &border_width, &depth);
draw_impl->xid = screen_x11->xroot_window;
draw_impl->wrapper = GDK_DRAWABLE (private);
draw_impl->colormap = gdk_screen_get_system_colormap (screen);
+ g_object_ref (draw_impl->colormap);
private->window_type = GDK_WINDOW_ROOT;
private->depth = depth;