diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-12-13 22:09:39 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2008-12-13 22:09:39 +0000 |
commit | 56fc47822c355ed966638aa2649f667d03c8cadb (patch) | |
tree | daf907e6e76a3d195e47b1dc4846bfc09fd6b8d6 /navit/event_glib.c | |
parent | e2c096a5884b1cad0c38d1076b79ff276e9ad9d5 (diff) | |
download | navit-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.c | 23 |
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 |