diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-05 07:30:17 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2009-01-05 07:30:17 +0000 |
commit | 3ba497a50612ec74f2f3650b13d269426e4fb3b9 (patch) | |
tree | 8e44de54afbd5504fd1fe87c3f65cd4df91294c8 /navit/main.c | |
parent | e11083d346694a5d42a80476b5c17b195cce7efa (diff) | |
download | navit-3ba497a50612ec74f2f3650b13d269426e4fb3b9.tar.gz |
Fix:Core:Some cleanups
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@1886 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/main.c')
-rw-r--r-- | navit/main.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/navit/main.c b/navit/main.c index a54778254..18499a66e 100644 --- a/navit/main.c +++ b/navit/main.c @@ -44,6 +44,7 @@ #include "route.h" #include "navigation.h" #include "event.h" +#include "callback.h" #include "navit_nls.h" #if HAVE_API_WIN32_BASE #include <windows.h> @@ -53,6 +54,9 @@ struct map_data *map_data_default; +struct callback_list *cbl; + + static void sigchld(int sig) { #if !defined(_WIN32) && !defined(__CEGCC__) @@ -120,16 +124,45 @@ void main_add_navit(struct navit *nav) { navit=g_list_prepend(navit, nav); + callback_list_call_2(cbl, nav, 1); } void main_remove_navit(struct navit *nav) { navit=g_list_remove(navit, nav); + callback_list_call_2(cbl, nav, 0); if (! navit) event_main_loop_quit(); } +int +main_add_attr(struct attr *attr) +{ + switch (attr->type) + { + case attr_callback: + callback_list_add(cbl, attr->u.callback); + return 1; + default: + return 0; + } +} + +int +main_remove_attr(struct attr *attr) +{ + switch (attr->type) + { + case attr_callback: + callback_list_remove(cbl, attr->u.callback); + return 1; + default: + return 0; + } +} + + #ifdef HAVE_API_WIN32 void setenv(char *var, char *val, int overwrite) @@ -186,7 +219,7 @@ main_init(char *program) #ifndef _WIN32 signal(SIGCHLD, sigchld); #endif - + cbl=callback_list_new(); setenv("LC_NUMERIC","C",1); setlocale(LC_ALL,""); setlocale(LC_NUMERIC,"C"); |