summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2008-07-31 22:11:44 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-07-31 22:11:44 +0000
commit75651f652e11a6e5951c7004362a98809701ac5f (patch)
tree2b6d3fc2494880f0905db16d2648dc6485b3445a
parent6bb1baff765e9bc6ace020a10d7c01c7f5be9c42 (diff)
downloadgtk+-75651f652e11a6e5951c7004362a98809701ac5f.tar.gz
Add gdk_threads_add_timeout_seconds{_full}
svn path=/trunk/; revision=20919
-rw-r--r--ChangeLog6
-rw-r--r--gdk/gdk.c65
-rw-r--r--gdk/gdk.h48
3 files changed, 99 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 627d4736fd..7d40fab1e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
* gtk/gtkprintoperation-win32.c: Fix problems in handling custom
diff --git a/gdk/gdk.c b/gdk/gdk.c
index 53667a07af..969869ffd6 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -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 *
gdk_get_program_class (void)
{
diff --git a/gdk/gdk.h b/gdk/gdk.h
index 008713d2ac..d834bb1622 100644
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -195,26 +195,34 @@ GDKVAR GMutex *gdk_threads_mutex; /* private */
GDKVAR GCallback gdk_threads_lock;
GDKVAR GCallback gdk_threads_unlock;
-void gdk_threads_enter (void);
-void gdk_threads_leave (void);
-void gdk_threads_init (void);
-void gdk_threads_set_lock_functions (GCallback enter_fn,
- GCallback leave_fn);
-
-guint gdk_threads_add_idle_full (gint priority,
- GSourceFunc function,
- gpointer data,
- GDestroyNotify notify);
-guint gdk_threads_add_idle (GSourceFunc function,
- gpointer data);
-guint gdk_threads_add_timeout_full (gint priority,
- guint interval,
- GSourceFunc function,
- gpointer data,
- GDestroyNotify notify);
-guint gdk_threads_add_timeout (guint interval,
- GSourceFunc function,
- gpointer data);
+void gdk_threads_enter (void);
+void gdk_threads_leave (void);
+void gdk_threads_init (void);
+void gdk_threads_set_lock_functions (GCallback enter_fn,
+ GCallback leave_fn);
+
+guint gdk_threads_add_idle_full (gint priority,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint gdk_threads_add_idle (GSourceFunc function,
+ gpointer data);
+guint gdk_threads_add_timeout_full (gint priority,
+ guint interval,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint gdk_threads_add_timeout (guint interval,
+ GSourceFunc function,
+ 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
# define GDK_THREADS_ENTER() G_STMT_START { \