From e7489cc00395995fb24ca14156bd9d28f7329123 Mon Sep 17 00:00:00 2001 From: Mike Kestner Date: Thu, 24 Apr 2008 20:01:31 +0000 Subject: [PATCH] 2008-04-24 Mike Kestner * gdk/Window.custom (Destroy): take a normal ref for the native method to release, and Dispose our toggle ref. Fixes #382186. svn path=/trunk/gtk-sharp/; revision=101734 --- ChangeLog | 5 +++++ gdk/Window.custom | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index de5f53a5b..7a79c51f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-04-24 Mike Kestner + + * gdk/Window.custom (Destroy): take a normal ref for the native + method to release, and Dispose our toggle ref. Fixes #382186. + 2008-04-24 Andres G. Aragoneses * glib/Signal.cs: Remove unneeded cast. diff --git a/gdk/Window.custom b/gdk/Window.custom index 702eaddae..7c5e08e08 100644 --- a/gdk/Window.custom +++ b/gdk/Window.custom @@ -4,7 +4,7 @@ // Mike Kestner // // Copyright (c) 2003 Moritz Balz -// Copyright (c) 2004 Novell, Inc. +// Copyright (c) 2004 - 2008 Novell, Inc. // // This code is inserted after the automatically generated code. // @@ -68,12 +68,20 @@ } } + [DllImport("libgobject-2.0-0.dll")] + static extern IntPtr g_object_ref (IntPtr raw); + [DllImport("libgdk-win32-2.0-0.dll")] static extern void gdk_window_destroy(IntPtr raw); - public void Destroy() { + public void Destroy () + { + // native method assumes an outstanding normal ref, but we hold a + // toggle ref. take out a normal ref for it to release, and let + // Dispose release our toggle ref. + g_object_ref (Handle); gdk_window_destroy(Handle); - Raw = IntPtr.Zero; + Dispose (); } public void MoveResize (Gdk.Rectangle rect) {