summaryrefslogtreecommitdiff
path: root/navit/event_glib.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-13 22:09:39 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2008-12-13 22:09:39 +0000
commit56fc47822c355ed966638aa2649f667d03c8cadb (patch)
treedaf907e6e76a3d195e47b1dc4846bfc09fd6b8d6 /navit/event_glib.c
parente2c096a5884b1cad0c38d1076b79ff276e9ad9d5 (diff)
downloadnavit-56fc47822c355ed966638aa2649f667d03c8cadb.tar.gz
Add:Core:Improved and implemented idle callback
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1789 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/event_glib.c')
-rw-r--r--navit/event_glib.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/navit/event_glib.c b/navit/event_glib.c
index 7a4a1ebbb..7a3c6f5f6 100644
--- a/navit/event_glib.c
+++ b/navit/event_glib.c
@@ -125,15 +125,34 @@ event_glib_remove_timeout(struct event_timeout *ev)
g_free(ev);
}
+struct event_idle {
+ guint source;
+ struct callback *cb;
+};
+
+static gboolean
+event_glib_call_idle(struct event_idle *ev)
+{
+ callback_call_0(ev->cb);
+ return TRUE;
+}
+
static struct event_idle *
-event_glib_add_idle(struct callback *cb)
+event_glib_add_idle(int priority, struct callback *cb)
{
- return NULL;
+ struct event_idle *ret=g_new0(struct event_idle, 1);
+ ret->cb=cb;
+ ret->source = g_idle_add_full(priority+100, (GSourceFunc)event_glib_call_idle, (gpointer)ret, NULL);
+ return ret;
}
static void
event_glib_remove_idle(struct event_idle *ev)
{
+ if (! ev)
+ return;
+ g_source_remove(ev->source);
+ g_free(ev);
}
static void