diff options
author | Tor Lillqvist <tml@novell.com> | 2005-07-06 15:30:10 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2005-07-06 15:30:10 +0000 |
commit | 489f99911abf7a3d4ba1441e3e1c1cf16d20c887 (patch) | |
tree | f477bfdaa9abd1c2be62e0d432d73758e76ccdee /gdk | |
parent | d7456e064f5916a430cec92a6b57bf40bd1548a7 (diff) | |
download | gdk-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.c | 8 |
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; |