]> Pileus Git - ~andy/gtk/commitdiff
Fixes from #98358, Havoc Pennington.
authorOwen Taylor <otaylor@redhat.com>
Mon, 25 Nov 2002 22:52:36 +0000 (22:52 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Mon, 25 Nov 2002 22:52:36 +0000 (22:52 +0000)
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.

13 files changed:
ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gdk/linux-fb/gdkcolor-fb.c
gdk/linux-fb/gdkscreen-fb.c
gdk/win32/gdkcolor-win32.c
gdk/win32/gdkscreen-win32.c
gdk/x11/gdkcolor-x11.c
gdk/x11/gdkscreen-x11.c
gdk/x11/gdkwindow-x11.c

index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+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): 
index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
@@ -1,3 +1,24 @@
+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): 
index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
@@ -1,3 +1,24 @@
+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): 
index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
@@ -1,3 +1,24 @@
+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): 
index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
@@ -1,3 +1,24 @@
+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): 
index 5c1c1fc112ec6bb71d391e3f8f7e0f4301b061f8..fdf297cb0438ede6f4574fa8c8f1e3d56bff8874 100644 (file)
@@ -1,3 +1,24 @@
+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): 
index 0435bbe48f52a9141dffbecd72cf8b2e7335b8f1..179d1b750266c32d16191e655d2429d9d8aeb72c 100644 (file)
@@ -52,6 +52,7 @@ gdk_colormap_finalize (GObject *object)
   
   g_free (private->info);
   g_free (colormap->colors);
+  g_free (private);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
index ece7cf2341159c69a27937ba14544447483d37d3..cf3563c6379702e5e2856c64cedca386af52c55e 100644 (file)
@@ -51,7 +51,17 @@ void
 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
index 9db468770eb742a7295ea8f4077b4ea41125b43b..94ee7edc600d4a92733e38795d9db531cc174900 100644 (file)
@@ -114,6 +114,7 @@ gdk_colormap_finalize (GObject *object)
   
   g_free (private->info);
   g_free (colormap->colors);
+  g_free (private);
   
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
index 96789e658b922dcc0cc1f8a0ae2dbc3a94174c64..51850b27eab1ed06f916de8ef0fd571e53e6987a 100644 (file)
@@ -44,7 +44,17 @@ void
 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
index 57f78b44c0d84d3d55baf5de59cf314896ad0dd1..415709930415e7d5ddc3b2af6e7f378ad44ead8e 100644 (file)
@@ -143,6 +143,7 @@ gdk_colormap_finalize (GObject *object)
   
   g_free (private->info);
   g_free (colormap->colors);
+  g_free (private);
   
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
index dd030103ffd67fa641ef4621ac083c835107d81a..c8f819727b4e02573a75f0632fc9e2958466bc72 100644 (file)
@@ -244,10 +244,17 @@ void
 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
@@ -256,6 +263,9 @@ gdk_screen_x11_dispose (GObject *object)
   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;
 
index c440710a461e4f2eded77f5e267f9d7edbaae743..3904619f93d74b592f72e9a524c1365c03c70801 100644 (file)
@@ -228,7 +228,7 @@ gdk_window_impl_x11_set_colormap (GdkDrawable *drawable,
   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 */
@@ -294,7 +294,8 @@ _gdk_windowing_window_init (GdkScreen * screen)
 
   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);
@@ -309,6 +310,7 @@ _gdk_windowing_window_init (GdkScreen * screen)
   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;