]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkpixmap.c
[ Merges from gtk-1-2 ]
[~andy/gtk] / gdk / gdkpixmap.c
index f76e097d32cff7d8b6d00023ff70d3791b51f438..6fc47e316e73bbfa5e9ebd4595b02401649b64d1 100644 (file)
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
+
+/*
+ * Modified by the GTK+ Team and others 1997-1999.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
 #include "config.h"
 #include <stdlib.h>
 #include <stdio.h>
@@ -64,7 +72,7 @@ gdk_pixmap_new (GdkWindow *window,
   if (depth == -1)
     depth = gdk_window_get_visual (window)->depth;
 
-  private = g_new (GdkWindowPrivate, 1);
+  private = g_new0 (GdkWindowPrivate, 1);
   pixmap = (GdkPixmap*) private;
 
   private->xdisplay = window_private->xdisplay;
@@ -106,7 +114,7 @@ gdk_bitmap_create_from_data (GdkWindow   *window,
   if (window_private->destroyed)
     return NULL;
 
-  private = g_new (GdkWindowPrivate, 1);
+  private = g_new0 (GdkWindowPrivate, 1);
   pixmap = (GdkPixmap*) private;
 
   private->parent = NULL;
@@ -158,7 +166,7 @@ gdk_pixmap_create_from_data (GdkWindow   *window,
   if (depth == -1)
     depth = gdk_window_get_visual (window)->depth;
 
-  private = g_new (GdkWindowPrivate, 1);
+  private = g_new0 (GdkWindowPrivate, 1);
   pixmap = (GdkPixmap*) private;
 
   private->parent = NULL;
@@ -510,7 +518,7 @@ _gdk_pixmap_create_from_xpm (GdkWindow  *window,
       
       color_name = gdk_pixmap_extract_color (buffer);
       
-      if (color_name == NULL ||
+      if (color_name == NULL || g_strcasecmp (color_name, "None") == 0 ||
          gdk_color_parse (color_name, &color->color) == FALSE)
        {
          color->color = *transparent_color;
@@ -809,7 +817,8 @@ void
 gdk_pixmap_unref (GdkPixmap *pixmap)
 {
   GdkWindowPrivate *private = (GdkWindowPrivate *)pixmap;
-  g_return_if_fail(pixmap != NULL);
+  g_return_if_fail (pixmap != NULL);
+  g_return_if_fail (private->ref_count > 0);
 
   private->ref_count -= 1;
   if (private->ref_count == 0)