From 983fb81a960c7d7bebfa3ee098767921cdd30118 Mon Sep 17 00:00:00 2001 From: Stephane Delcroix Date: Sun, 3 May 2009 19:34:22 +0000 Subject: [PATCH] 2009-05-03 Stephane Delcroix * 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 --- ChangeLog | 8 ++++++++ glib/Idle.cs | 20 ++++++++++++++++++-- glib/Makefile.am | 1 + glib/Priority.cs | 31 +++++++++++++++++++++++++++++++ glib/Timeout.cs | 19 ++++++++++++++++++- 5 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 glib/Priority.cs diff --git a/ChangeLog b/ChangeLog index 4d6a883ef..6204a2ef2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-05-03 Stephane Delcroix + + * 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 + 2009-05-02 Mike Kestner * gtk/Gtk.metadata: updates for new RecentItems prop. diff --git a/glib/Idle.cs b/glib/Idle.cs index 02f44c68e..965270957 100755 --- a/glib/Idle.cs +++ b/glib/Idle.cs @@ -1,10 +1,13 @@ // GLib.Idle.cs - Idle class implementation // -// Author: Mike Kestner -// Rachel Hestilow +// Author(s): +// Mike Kestner +// Rachel Hestilow +// Stephane Delcroix // // Copyright (c) 2002 Mike Kestner // Copyright (c) Rachel Hestilow +// Copyright (c) 2009 Novell, Inc. // // This program is free software; you can redistribute it and/or // modify it under the terms of version 2 of the Lesser GNU General @@ -74,6 +77,19 @@ namespace GLib { return p.ID; } + + [DllImport("libglib-2.0-0.dll")] + static extern uint g_idle_add_full (int priority, IdleHandlerInternal d, IntPtr data, DestroyNotify notify); + + public static uint Add (IdleHandler hndlr, Priority priority) + { + IdleProxy p = new IdleProxy (hndlr); + p.ID = g_idle_add_full ((int)priority, (IdleHandlerInternal)p.proxy_handler, IntPtr.Zero, null); + lock (Source.source_handlers) + Source.source_handlers [p.ID] = p; + + return p.ID; + } [DllImport("libglib-2.0-0.dll")] static extern bool g_source_remove_by_funcs_user_data (Delegate d, IntPtr data); diff --git a/glib/Makefile.am b/glib/Makefile.am index 7e31f3870..89c3b6358 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -56,6 +56,7 @@ sources = \ ObjectManager.cs \ Opaque.cs \ ParamSpec.cs \ + Priority.cs \ PropertyAttribute.cs \ PtrArray.cs \ Signal.cs \ diff --git a/glib/Priority.cs b/glib/Priority.cs new file mode 100644 index 000000000..9c7a96495 --- /dev/null +++ b/glib/Priority.cs @@ -0,0 +1,31 @@ +// GLib.Priority.cs +// +// Author(s): +// Stephane Delcroix +// +// Copyright (c) 2009 Novell, Inc. +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of version 2 of the Lesser GNU General +// Public License as published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., 59 Temple Place - Suite 330, +// Boston, MA 02111-1307, USA. + +namespace GLib { + public enum Priority + { + High = -100, + Default = 0, + HighIdle = 100, + DefaultIdle = 200, + Low = 300, + } +} diff --git a/glib/Timeout.cs b/glib/Timeout.cs index 372d85a05..4a51ebeab 100755 --- a/glib/Timeout.cs +++ b/glib/Timeout.cs @@ -1,8 +1,11 @@ // GLib.Timeout.cs - Timeout class implementation // -// Author: Mike Kestner +// Author(s): +// Mike Kestner +// Stephane Delcroix // // Copyright (c) 2002 Mike Kestner +// Copyright (c) 2009 Novell, Inc. // // This program is free software; you can redistribute it and/or // modify it under the terms of version 2 of the Lesser GNU General @@ -69,6 +72,20 @@ namespace GLib { return p.ID; } + [DllImport("libglib-2.0-0.dll")] + static extern uint g_timeout_add_full (int priority, uint interval, TimeoutHandlerInternal d, IntPtr data, DestroyNotify notify); + + public static uint Add (uint interval, TimeoutHandler hndlr, Priority priority) + { + TimeoutProxy p = new TimeoutProxy (hndlr); + + p.ID = g_timeout_add_full ((int)priority, interval, (TimeoutHandlerInternal) p.proxy_handler, IntPtr.Zero, null); + lock (Source.source_handlers) + Source.source_handlers [p.ID] = p; + + return p.ID; + } + [DllImport("libglib-2.0-0.dll")] static extern uint g_timeout_add_seconds (uint interval, TimeoutHandlerInternal d, IntPtr data);