diff --git a/gnomebug671538.patch b/gnomebug671538.patch new file mode 100644 index 0000000..ea07420 --- /dev/null +++ b/gnomebug671538.patch @@ -0,0 +1,54 @@ +From 7aa624ba01a89c23e25d7d67b3fd54b4a9ae4084 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= +Date: Mon, 8 Apr 2013 22:45:50 +0200 +Subject: [PATCH] win32: free allocated gdi objects in 16bpp + +In 16bpp, Gdk is creating hbitmap with CreateDIBSection() and a hdc with +CreateCompatibleDC(). Those 2 objects need to be released when the +pixmap is finalized. + +https://bugzilla.gnome.org/show_bug.cgi?id=671538 +--- + gdk/win32/gdkpixmap-win32.c | 7 +++++++ + gdk/win32/gdkpixmap-win32.h | 1 + + 2 files changed, 8 insertions(+) + +diff --git a/gdk/win32/gdkpixmap-win32.c b/gdk/win32/gdkpixmap-win32.c +index 6d18ca4..53c6f3c 100644 +--- a/gdk/win32/gdkpixmap-win32.c ++++ b/gdk/win32/gdkpixmap-win32.c +@@ -121,6 +121,11 @@ gdk_pixmap_impl_win32_finalize (GObject *object) + /* Drop our reference */ + cairo_surface_destroy (drawable_impl->cairo_surface); + drawable_impl->cairo_surface = NULL; ++ ++ if (impl->is_allocated) { ++ GDI_CALL (DeleteDC, (drawable_impl->hdc)); ++ DeleteObject (GDK_PIXMAP_HBITMAP (wrapper)); ++ } + } + + _gdk_win32_drawable_finish (GDK_DRAWABLE (object)); +@@ -264,6 +269,8 @@ _gdk_pixmap_new (GdkDrawable *drawable, + HWND hwnd; + GdkVisual *visual; + ++ pixmap_impl->is_allocated = TRUE; ++ + if (GDK_IS_WINDOW (drawable)) + hwnd = GDK_WINDOW_HWND (drawable); + else +diff --git a/gdk/win32/gdkpixmap-win32.h b/gdk/win32/gdkpixmap-win32.h +index fbeb28f..e9d965d 100644 +--- a/gdk/win32/gdkpixmap-win32.h ++++ b/gdk/win32/gdkpixmap-win32.h +@@ -53,6 +53,7 @@ struct _GdkPixmapImplWin32 + gint height; + guchar *bits; + guint is_foreign : 1; ++ guint is_allocated : 1; + }; + + struct _GdkPixmapImplWin32Class +-- +1.8.1.1.439.g50a6b54 \ No newline at end of file diff --git a/mingw-gtk2.spec b/mingw-gtk2.spec index 1402354..2c5a75f 100644 --- a/mingw-gtk2.spec +++ b/mingw-gtk2.spec @@ -2,7 +2,7 @@ Name: mingw-gtk2 Version: 2.24.22 -Release: 1%{?dist} +Release: 2%{?dist} Summary: MinGW Windows Gtk2 library License: LGPLv2+ @@ -26,6 +26,12 @@ Patch15: window-dragging.patch # https://bugzilla.gnome.org/show_bug.cgi?id=704508 Patch17: gtk-combo-box-dont-use-invalidated-iter.patch +# Don't leak memory with 16bpp +# https://bugzilla.redhat.com/show_bug.cgi?id=1063709 +# https://bugzilla.gnome.org/show_bug.cgi?id=671538 +# https://bug671538.bugzilla-attachments.gnome.org/attachment.cgi?id=240982 +Patch18: gnomebug671538.patch + # Fix use of extended buttons in gtkstatusicon. Patch1000: mingw32-gtk2-2.15.0-xbuttons.patch @@ -128,6 +134,7 @@ Static version of the MinGW Windows Gtk2 library. %patch8 -p1 -b .tooltip-positioning %patch15 -p1 -b .window-dragging %patch17 -p1 -b .combobox_iter +%patch18 -p0 -b .16bpp %patch1000 -p1 autoreconf -i --force @@ -317,6 +324,9 @@ rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/gtk-2.0/modules/*.dll.a %changelog +* Tue Feb 11 2014 Thomas Sailer - 2.24.22-2 +- Patch for Gdk 16bpp memory leak + * Sun Oct 13 2013 Erik van Pienbroek - 2.24.22-1 - Update to 2.24.22