summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorTor Lillqvist <tml@novell.com>2005-07-06 15:30:10 +0000
committerTor Lillqvist <tml@src.gnome.org>2005-07-06 15:30:10 +0000
commit489f99911abf7a3d4ba1441e3e1c1cf16d20c887 (patch)
treef477bfdaa9abd1c2be62e0d432d73758e76ccdee /gdk
parentd7456e064f5916a430cec92a6b57bf40bd1548a7 (diff)
downloadgdk-pixbuf-489f99911abf7a3d4ba1441e3e1c1cf16d20c887.tar.gz
Don't create the GdkPixbuf until we know that we have something to put in
2005-07-06 Tor Lillqvist <tml@novell.com> * 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.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/win32/gdkcursor-win32.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gdk/win32/gdkcursor-win32.c b/gdk/win32/gdkcursor-win32.c
index d2dd6de8c..54af4a82c 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;