Commit graph

26 commits

Author SHA1 Message Date
nyx 114899f46e Fixed memory leak when scheduling timeout and idle callbacks 2016-02-17 00:02:47 +03:00
Bertrand Lorentz f5211acb74 glib: Have SourceProxy implement the Dispose pattern
Its 2 subclasses, IdleProxy and TimeoutProxy, were already implementing
it, so we factor this implementation into the base class.
2014-07-05 16:07:39 +02:00
Bertrand Lorentz 813f56e00a glib: Refactor Source, Idle and Timeout classes
Turn Source.source_handlers into a private generic Dictionary, and add
the necessary methods to allow Idle and Timeout to add and remove
entries from it.

This improves the encapsulation of the Source class, and factors
into it some code that was previously duplicated in Idle and Timeout.
2014-07-05 16:07:28 +02:00
Andrés G. Aragoneses f1005da47c glib: Make all DllImports in custom code use a common const
This way there's less redundancy, and if the library name changes in the
future, it will be changed only in one place.

Signed-off-by: Bertrand Lorentz <bertrand.lorentz@gmail.com>
2013-11-17 13:05:12 +01:00
Mike Kestner 6fbd419c1d Remove source delegates by id.
* glib/Idle.cs: use g_source_remove and id in Remove(Delegate)
* glib/Timeout.cs: use g_source_remove and id in Remove(Delegate)
[Fixes #632765]
2011-10-13 05:23:39 -05:00
Andrés G. Aragoneses df7e0afe5c Minor nitpick lacking in r142364
svn path=/trunk/gtk-sharp/; revision=143534
2009-10-06 17:12:53 +00:00
Brad Taylor 0eece4438f 2009-09-22 Brad Taylor <brad@getcoded.net>
* glib/Idle.cs: 
	* glib/Timeout.cs: Don't try to remove the handler from the managed
	hashtable twice, add a comment explaining the need for the else branch.


svn path=/trunk/gtk-sharp/; revision=142364
2009-09-22 02:52:41 +00:00
Brad Taylor 445fe30046 2009-09-22 Brad Taylor <brad@getcoded.net>
* glib/Idle.cs: 
	* glib/Timeout.cs: Make sure to remove the unmanaged reference to the
	delegate when we're disposed or finalized.  In particular, this fixes a
	problem where GLib.Object's PerformQueuedUnrefs was being called after
	both the object and the handler had been GC'ed, resulting in a
	segfault.


svn path=/trunk/gtk-sharp/; revision=142362
2009-09-22 02:19:50 +00:00
Christian Hoff 7b752d233c 2009-09-03 Christian Hoff <christian_hoff@gmx.net>
* glib/Global.cs: Kill the calling convention field again.
	It breaks GLib 2.x compatibility in the generator and there is
	probably no need to make the calling convention configurable.
	* .cs, *.custom: Hardcode Cdecl calling convention instead of
	using GLib's field.

svn path=/trunk/gtk-sharp/; revision=141283
2009-09-03 19:50:53 +00:00
Christian Hoff 58e97c087a 2009-09-02 Christian Hoff <christian_hoff@gmx.net>
* glib/Global.cs: Add a public constant field specifying the
	calling convention used by GLib and depending libraries.
	By now it's hardcoded to Cdecl as every non-Win32 runtime
	should ignore this attribute.
	* *.cs, *.custom: Use GLib.Global.CallingConvention for both
	pinvokes and callbacks. Plugs a stack leak on Win32. All
	pinvokes defaulted to StdCall and thus the stack was never
	cleaned up.

svn path=/trunk/gtk-sharp/; revision=141175
2009-09-02 20:17:37 +00:00
Christian Hoff 940cf88750 2009-07-02 Christian Hoff <christian_hoff@gmx.net>
* configure.in.in: Target .net 2.0 profile
	* gapi-cdecl-insert: Kill. We are now using the UnmanagedFunctionPointerAttribute
	for callbacks.
	* glib/CdeclCallback: Mark obsolete.
	* generator/*.cs:
	* *.custom: Use [UnmanagedFunctionPointer (CallingConvention.Cdecl)] instead of
	[GLib.CDeclCallback].

svn path=/trunk/gtk-sharp/; revision=137323
2009-07-02 20:18:10 +00:00
Mike Kestner e91a71949a 2009-05-06 Mike Kestner <mkestner@novell.com>
* glib/Idle.cs: add a Remove overload for consistency.
	* glib/Timeout.cs: add a Remove overload for consistency.
	[Fixes #356138]

svn path=/trunk/gtk-sharp/; revision=133702
2009-05-07 01:22:41 +00:00
Stephane Delcroix 983fb81a96 2009-05-03 Stephane Delcroix <sdelcroix@novell.com>
* glib/Idle.cs:
	* glib/Timeout.cs: add Add() overloads taking a priority
	* glib/Makefile.am:
	* glib/Property.cs: Property enum, used as argument for the new Add
	overloads

svn path=/trunk/gtk-sharp/; revision=133444
2009-05-03 19:34:22 +00:00
Mike Kestner c949e6e8de 2008-02-21 Mike Kestner <mkestner@novell.com>
* glib/Source.cs: rework proxy removal to avoid boxing profile.
	* glib/Idle.cs: save src_id in proxy to facilitate removal.
	* glib/Timeout.cs: save src_id in proxy to facilitate removal.
	[Fixes #359561]

svn path=/trunk/gtk-sharp/; revision=96363
2008-02-21 16:32:03 +00:00
Mike Kestner a8b11a7445 2007-04-12 Mike Kestner <mkestner@novell.com>
* glib/Idle.cs :
	* glib/Timeout.cs : don't add the CDeclCallback attr to the
	public delegate type, since it causes a MissingMethod exception
	on win32.

svn path=/trunk/gtk-sharp/; revision=75656
2007-04-12 17:57:50 +00:00
Mike Kestner 57810954a3 2007-03-08 Mike Kestner <mkestner@novell.com>
* glib/*.cs : add try/catch blocks to native callback
	methods for DestroyNotify, Copy/Free, and ToggleNotify handlers.  
	Raise UnhandledException events on catches.  

svn path=/trunk/gtk-sharp/; revision=73965
2007-03-08 20:28:24 +00:00
Mike Kestner 57972ab070 2005-02-28 Mike Kestner <mkestner@novell.com>
* glib/Idle.cs : add locking on the source_handlers.
	* glib/Source.cs : add locking on the source_handlers.
	* glib/Timeout.cs : add locking on the source_handlers.

svn path=/trunk/gtk-sharp/; revision=41290
2005-02-28 18:11:24 +00:00
Mike Kestner 6d70444302 2005-02-25 Mike Kestner <mkestner@novell.com>
* glib/Source.cs : remove from the hash by key.
	* glib/Idle.cs : remove from the hash by key.

svn path=/trunk/gtk-sharp/; revision=41208
2005-02-25 18:18:10 +00:00
Mike Kestner d75f4ef6ca 2004-09-26 Mike Kestner <mkestner@ximian.com>
* glib/Idle.cs : proxy hash keys are uints, not ints.

svn path=/trunk/gtk-sharp/; revision=34420
2004-09-27 00:28:16 +00:00
Miguel de Icaza 95978e0ce7 2004-09-18 Miguel de Icaza <miguel@ximian.com>
* glib/Source.cs: Add new base class to hold the method to be
	called, and the proxy handler we use to keep references to them
	and avoid a collection.

	Exposes a new variables that references all the active Timeouts
	and Idle handlers to avoid collection/

	* glib/Timeout.cs: Implement TimeoutProxy that acts as a filter to
	remove the proxy when the timeout is removed.

	Register a TimeoutProxy when we create a timeout.

	* glib/Idle.cs: Implement IdleProxy that acts as a filter to
	remove the proxy when the idle handler is removed.

	Register an IdleProxy when we create a timeout.

svn path=/trunk/gtk-sharp/; revision=34094
2004-09-20 16:43:16 +00:00
Mike Kestner 652b7fc82f remove a bunch of doc comments
svn path=/trunk/gtk-sharp/; revision=30951
2004-07-09 15:25:39 +00:00
Mike Kestner 7a6d6b2128 2004-06-25 Mike Kestner <mkestner@ximian.com>
* */*.cs : add lgpl license blurb and clean up (c)'s.
	* */*.custom : add lgpl license blurb and clean up (c)'s.
	* */glue/*.c : add lgpl license blurb and clean up (c)'s.
	file adds without license from now on are punishable by wedgie.

svn path=/trunk/gtk-sharp/; revision=30401
2004-06-25 18:42:19 +00:00
John Luke 7e9700901f add Idle.Remove method
svn path=/trunk/gtk-sharp/; revision=21483
2003-12-24 19:37:41 +00:00
Miguel de Icaza 215133d780 2003-03-15 Miguel de Icaza <miguel@ximian.com>
* sample: Update samples to new Glade.Widget.

	* glade/WidgetAttribute.cs: Moved the old GladeWidgetattribute
	here.   Now its called `Glade.WidgetAttribute'.

	* glade/GladeWidgetAttribute.cs: Removed

	* glib/Idle.cs: Do not allow Idle class to be instantiated.

svn path=/trunk/gtk-sharp/; revision=12554
2003-03-15 21:02:25 +00:00
Mike Kestner c0b574a686 2003-02-21 Mike Kestner <mkestner@speakeasy.net>
* mapdllnames.pl : a little whitespace action
	* api/*-api.xml : move to win32 dllnames
	* */makefile.win32 : remove the mapdllnames step
	* */*.cs : move to win32 dllnames
	* */*.custom : move to win32 dllnames
	* sources/gtk-sharp.sources : move to win32 dllnames

svn path=/trunk/gtk-sharp/; revision=11823
2003-02-22 04:34:56 +00:00
Rachel Hestilow a502336ccf 2002-08-31 Rachel Hestilow <hestilow@ximian.com>
* glib/Idle.cs: Added.
	* gtk/Application.cs: Add EventsPending, RunIteration.

	* sample/TreeViewDemo.cs: Add a status dialog while
	populating tree.

svn path=/trunk/gtk-sharp/; revision=7164
2002-08-31 20:37:52 +00:00