[Pkg-mono-svn-commits] rev 2544 - in gtk-sharp2/trunk/debian: . patches

Sebastian Dröge slomo-guest at costa.debian.org
Tue May 9 17:51:52 UTC 2006


Author: slomo-guest
Date: 2006-05-09 17:51:51 +0000 (Tue, 09 May 2006)
New Revision: 2544

Added:
   gtk-sharp2/trunk/debian/patches/06_value-array-smp-free.dpatch
Modified:
   gtk-sharp2/trunk/debian/changelog
   gtk-sharp2/trunk/debian/control
   gtk-sharp2/trunk/debian/patches/00list
Log:
* added a important bugfix
* bumped standards version to 3.7.2


Modified: gtk-sharp2/trunk/debian/changelog
===================================================================
--- gtk-sharp2/trunk/debian/changelog	2006-05-09 17:47:26 UTC (rev 2543)
+++ gtk-sharp2/trunk/debian/changelog	2006-05-09 17:51:51 UTC (rev 2544)
@@ -6,6 +6,7 @@
     + Added libmono-cairo1.0-cil to build-deps.
   * Sebastian 'slomo' Dröge
     + Add myself to Uploaders
+    + Update Standards-Version to 3.7.2
     + debian/patches/03_gnomevfs-mimetype-pinvokes.dpatch: (SVN rev 58615)
       - Fix the GnomeVFS MimeType P/Invokes to conform to the
         const/non-const conventions as specified in the gnomevfs headers.
@@ -17,6 +18,10 @@
       - Fix signature of Gdk.Drawable.DrawPoints(). The old version was
         completely wrong and would segfault everything using it.
         http://bugzilla.ximian.com/show_bug.cgi?id=77942
+    + debian/patches/06_value-array-smp-free.dpatch:
+      - Don't immediately free ValueArrays; queue them up to be freed in the
+        main thread by using a Timeout. This fixes SMP deadlocks when the
+        GValues contained therein aren't threadsafe (like GDK resources).
 
  -- Debian Mono Group <pkg-mono-group at lists.alioth.debian.org>  Fri, 14 Apr 2006 12:48:02 +0200
 

Modified: gtk-sharp2/trunk/debian/control
===================================================================
--- gtk-sharp2/trunk/debian/control	2006-05-09 17:47:26 UTC (rev 2543)
+++ gtk-sharp2/trunk/debian/control	2006-05-09 17:51:51 UTC (rev 2544)
@@ -4,7 +4,7 @@
 Maintainer: Debian Mono Group <pkg-mono-group at lists.alioth.debian.org>
 Uploaders: Dave Beckett <dajobe at debian.org>, Mirco Bauer <meebey at meebey.net>, Sebastian Dröge <slomo at ubuntu.com>
 Build-Depends: debhelper (>= 4.1.87), cli-common-dev (>= 0.4.0), dpatch, mono-mcs (>= 1.0) | c-sharp-compiler, mono-gac (>= 1.0), monodoc-base (>= 1.0), libmono-dev, libtool, libglib2.0-dev (>= 2.8.0), libgtk2.0-dev (>= 2.8.0), libpango1.0-dev, libatk1.0-dev, libfreetype6-dev, libxml2-dev, libglade2-dev (>= 2.3.6), librsvg2-dev (>= 2.0.1), libgail-dev, libgtkhtml3.8-dev (>= 3.8.0), libgnomeui-dev (>= 2.10.0), libgnomecanvas2-dev (>= 2.10.0), libgnomeprint2.2-dev (>= 2.10.0) , libgnomeprintui2.2-dev (>= 2.10.0), libart-2.0-dev (>= 2.3.16), libvte-dev (>= 0.11.10), libpanel-applet2-dev (>= 2.10.0), libmono0 (>= 1.0), mono-utils (>= 1.0-2), libmono-cairo1.0-cil
-Standards-Version: 3.6.2.1
+Standards-Version: 3.7.2
 
 Package: gtk-sharp2
 Architecture: all

Modified: gtk-sharp2/trunk/debian/patches/00list
===================================================================
--- gtk-sharp2/trunk/debian/patches/00list	2006-05-09 17:47:26 UTC (rev 2543)
+++ gtk-sharp2/trunk/debian/patches/00list	2006-05-09 17:51:51 UTC (rev 2544)
@@ -3,3 +3,4 @@
 03_gnomevfs-mimetype-pinvokes.dpatch
 04_list-to-array-marshalling.dpatch
 05_gdk-drawable.dpatch
+06_value-array-smp-free.dpatch

Added: gtk-sharp2/trunk/debian/patches/06_value-array-smp-free.dpatch
===================================================================
--- gtk-sharp2/trunk/debian/patches/06_value-array-smp-free.dpatch	2006-05-09 17:47:26 UTC (rev 2543)
+++ gtk-sharp2/trunk/debian/patches/06_value-array-smp-free.dpatch	2006-05-09 17:51:51 UTC (rev 2544)
@@ -0,0 +1,53 @@
+#!/bin/sh /usr/share/dpatch/dpatch-run
+
+ at DPATCH@
+
+--- gtk-sharp/glib/ValueArray.cs	2004/12/07 19:03:55	37324
++++ gtk-sharp/glib/ValueArray.cs	2006/05/08 20:45:48	60424
+@@ -29,6 +29,9 @@
+ 
+ 		private IntPtr handle = IntPtr.Zero;
+ 
++		static private ArrayList PendingFrees = new ArrayList ();
++		static private bool idle_queued = false;
++
+ 		[DllImport("libgobject-2.0-0.dll")]
+ 		static extern IntPtr g_value_array_new (uint n_preallocs);
+ 
+@@ -62,9 +65,35 @@
+ 			if (Handle == IntPtr.Zero)
+ 				return;
+ 
+-			g_value_array_free (Handle);
++			lock (PendingFrees) {
++				PendingFrees.Add (handle);
++
++				if (! idle_queued) {
++					Timeout.Add (50, new TimeoutHandler (PerformFrees));
++					idle_queued = true;
++				}
++			}
++
+ 			handle = IntPtr.Zero;
+ 		}
++
++		static bool PerformFrees ()
++		{
++			IntPtr[] handles;
++
++			lock (PendingFrees) {
++				idle_queued = false;
++
++				handles = new IntPtr [PendingFrees.Count];
++				PendingFrees.CopyTo (handles, 0);
++				PendingFrees.Clear ();
++			}
++
++			foreach (IntPtr h in handles)
++				g_value_array_free (h);
++
++			return false;
++		}
+ 		
+ 		public IntPtr Handle {
+ 			get {




More information about the Pkg-mono-svn-commits mailing list