From 489f99911abf7a3d4ba1441e3e1c1cf16d20c887 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Wed, 6 Jul 2005 15:30:10 +0000 Subject: Don't create the GdkPixbuf until we know that we have something to put in 2005-07-06 Tor Lillqvist * gdk/win32/gdkcursor-win32.c (gdk_win32_icon_to_pixbuf_libgtk_only): Don't create the GdkPixbuf until we know that we have something to put in it. --- gdk/win32/gdkcursor-win32.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'gdk/win32/gdkcursor-win32.c') diff --git a/gdk/win32/gdkcursor-win32.c b/gdk/win32/gdkcursor-win32.c index d2dd6de8ca..54af4a82ce 100644 --- a/gdk/win32/gdkcursor-win32.c +++ b/gdk/win32/gdkcursor-win32.c @@ -426,14 +426,15 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) if (!GDI_CALL (GetIconInfo, (hicon, &ii))) return NULL; - memset (&bmi, 0, sizeof (bmi)); - bmi.bi.biSize = sizeof (bmi.bi); if (!(hdc = CreateCompatibleDC (NULL))) { WIN32_GDI_FAILED ("CreateCompatibleDC"); goto out0; } + memset (&bmi, 0, sizeof (bmi)); + bmi.bi.biSize = sizeof (bmi.bi); + if (!GDI_CALL (GetDIBits, (hdc, ii.hbmColor, 0, 1, NULL, (BITMAPINFO *)&bmi, DIB_RGB_COLORS))) goto out1; @@ -443,13 +444,14 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) bmi.bi.biBitCount = 32; bmi.bi.biCompression = BI_RGB; bmi.bi.biHeight = -h; - pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, w, h); + bits = g_malloc0 (4 * w * h); /* color data */ if (!GDI_CALL (GetDIBits, (hdc, ii.hbmColor, 0, h, bits, (BITMAPINFO *)&bmi, DIB_RGB_COLORS))) goto out2; + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, w, h); pixels = gdk_pixbuf_get_pixels (pixbuf); rowstride = gdk_pixbuf_get_rowstride (pixbuf); no_alpha = TRUE; -- cgit v1.2.1