diff options
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"); |