Add gdk_threads_add_timeout_seconds{_full}

svn path=/trunk/; revision=20919
This commit is contained in:
Matthias Clasen 2008-07-31 22:11:44 +00:00
parent 6bb1baff76
commit 75651f652e
3 changed files with 98 additions and 19 deletions

View File

@ -1,3 +1,9 @@
2008-07-31 Matthisa Clasen <mclasen@redhat.com>
* gdk/gdk.[hc]:
* gdk/gdk.symbols: Complete the set of thread-safe timeout function
with second-granularity versions. Patch by Marek Kasik.
2008-07-30 Tor Lillqvist <tml@novell.com> 2008-07-30 Tor Lillqvist <tml@novell.com>
* gtk/gtkprintoperation-win32.c: Fix problems in handling custom * gtk/gtkprintoperation-win32.c: Fix problems in handling custom

View File

@ -691,6 +691,71 @@ gdk_threads_add_timeout (guint interval,
} }
/**
* gdk_threads_add_timeout_seconds_full:
* @priority: the priority of the timeout source. Typically this will be in the
* range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE.
* @interval: the time between calls to the function, in seconds
* @function: function to call
* @data: data to pass to @function
* @notify: function to call when the timeout is removed, or %NULL
*
* A variant of gdk_threads_add_timout_full() with second-granularity.
* See g_timeout_add_seconds_full() for a discussion of why it is
* a good idea to use this function if you don't need finer granularity.
*
* Return value: the ID (greater than 0) of the event source.
*
* Since: 2.14
*/
guint
gdk_threads_add_timeout_seconds_full (gint priority,
guint interval,
GSourceFunc function,
gpointer data,
GDestroyNotify notify)
{
GdkThreadsDispatch *dispatch;
g_return_val_if_fail (function != NULL, 0);
dispatch = g_slice_new (GdkThreadsDispatch);
dispatch->func = function;
dispatch->data = data;
dispatch->destroy = notify;
return g_timeout_add_seconds_full (priority,
interval,
gdk_threads_dispatch,
dispatch,
gdk_threads_dispatch_free);
}
/**
* gdk_threads_add_timeout_seconds:
* @interval: the time between calls to the function, in seconds
* @function: function to call
* @data: data to pass to @function
*
* A wrapper for the common usage of gdk_threads_add_timeout_seconds_full()
* assigning the default priority, #G_PRIORITY_DEFAULT.
*
* For details, see gdk_threads_add_timeout_full().
*
* Return value: the ID (greater than 0) of the event source.
*
* Since: 2.14
*/
guint
gdk_threads_add_timeout_seconds (guint interval,
GSourceFunc function,
gpointer data)
{
return gdk_threads_add_timeout_seconds_full (G_PRIORITY_DEFAULT,
interval, function, data, NULL);
}
G_CONST_RETURN char * G_CONST_RETURN char *
gdk_get_program_class (void) gdk_get_program_class (void)
{ {

View File

@ -195,26 +195,34 @@ GDKVAR GMutex *gdk_threads_mutex; /* private */
GDKVAR GCallback gdk_threads_lock; GDKVAR GCallback gdk_threads_lock;
GDKVAR GCallback gdk_threads_unlock; GDKVAR GCallback gdk_threads_unlock;
void gdk_threads_enter (void); void gdk_threads_enter (void);
void gdk_threads_leave (void); void gdk_threads_leave (void);
void gdk_threads_init (void); void gdk_threads_init (void);
void gdk_threads_set_lock_functions (GCallback enter_fn, void gdk_threads_set_lock_functions (GCallback enter_fn,
GCallback leave_fn); GCallback leave_fn);
guint gdk_threads_add_idle_full (gint priority, guint gdk_threads_add_idle_full (gint priority,
GSourceFunc function, GSourceFunc function,
gpointer data, gpointer data,
GDestroyNotify notify); GDestroyNotify notify);
guint gdk_threads_add_idle (GSourceFunc function, guint gdk_threads_add_idle (GSourceFunc function,
gpointer data); gpointer data);
guint gdk_threads_add_timeout_full (gint priority, guint gdk_threads_add_timeout_full (gint priority,
guint interval, guint interval,
GSourceFunc function, GSourceFunc function,
gpointer data, gpointer data,
GDestroyNotify notify); GDestroyNotify notify);
guint gdk_threads_add_timeout (guint interval, guint gdk_threads_add_timeout (guint interval,
GSourceFunc function, GSourceFunc function,
gpointer data); gpointer data);
guint gdk_threads_add_timeout_seconds_full (gint priority,
guint interval,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
guint gdk_threads_add_timeout_seconds (guint interval,
GSourceFunc function,
gpointer data);
#ifdef G_THREADS_ENABLED #ifdef G_THREADS_ENABLED
# define GDK_THREADS_ENTER() G_STMT_START { \ # define GDK_THREADS_ENTER() G_STMT_START { \