From bbe23ea12681948afc26e3064d4e3d724d713c87 Mon Sep 17 00:00:00 2001 From: akashihi Date: Mon, 7 Jun 2010 07:34:41 +0000 Subject: [PATCH] Fix:plugins:Osso plugin should be working now git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3343 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/autoload/osso/osso.c | 58 ++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/navit/navit/autoload/osso/osso.c b/navit/navit/autoload/osso/osso.c index cd05ed3..c2e80b3 100644 --- a/navit/navit/autoload/osso/osso.c +++ b/navit/navit/autoload/osso/osso.c @@ -6,12 +6,19 @@ #include "attr.h" #include "navit.h" #include "plugin.h" +#include "callback.h" +#include "config_.h" static osso_context_t *osso_context; static struct attr callback = { attr_callback }; +struct cb_hw_state_trail { + struct navit* nav; + osso_hw_state_t *state; +}; + static void -navit_osso_display_on(struct navit *this_) +osso_display_on(struct navit *this_) { osso_return_t err; err = osso_display_blanking_pause(osso_context); @@ -22,20 +29,20 @@ navit_osso_display_on(struct navit *this_) } static gboolean -osso_cb_hw_state_idle(osso_hw_state_t * state) +osso_cb_hw_state_idle(struct cb_hw_state_trail * params) { dbg(0, "(inact=%d, save=%d, shut=%d, memlow=%d, state=%d)\n", - state->system_inactivity_ind, - state->save_unsaved_data_ind, state->shutdown_ind, - state->memory_low_ind, state->sig_device_mode_ind); + params->state->system_inactivity_ind, + params->state->save_unsaved_data_ind, params->state->shutdown_ind, + params->state->memory_low_ind, params->state->sig_device_mode_ind); - if (state->shutdown_ind) { + if (params->state->shutdown_ind) { /* we are going down, down, down */ - //navit_destroy(global_navit); - exit(1); + navit_destroy(params->nav); } - g_free(state); + g_free(params->state); + g_free(params); return FALSE; } @@ -49,34 +56,39 @@ osso_cb_hw_state_idle(osso_hw_state_t * state) static void osso_cb_hw_state(osso_hw_state_t * state, gpointer data) { - osso_hw_state_t *state_copy = g_new(osso_hw_state_t, 1); - memcpy(state_copy, state, sizeof(osso_hw_state_t)); - g_idle_add((GSourceFunc) osso_cb_hw_state_idle, state_copy); + struct navit *nav = (struct navit*)data; + struct cb_hw_state_trail *params = g_new(struct cb_hw_state_trail,1); + params->nav=nav; + params->state = g_new(osso_hw_state_t, 1); + memcpy(params->state, state, sizeof(osso_hw_state_t)); + g_idle_add((GSourceFunc) osso_cb_hw_state_idle, params); } static void osso_navit(struct navit *nav, int add) { - struct callback *cb; - dbg(2, "enter\n"); + dbg(1, "Installing osso context for org.navit_project.navit\n"); + osso_context = osso_initialize("org.navit_project.navit", VERSION, TRUE, NULL); + if (osso_context == NULL) { + dbg(0, "error initiating osso context\n"); + } + osso_hw_set_event_cb(osso_context, NULL, osso_cb_hw_state, nav); + if (add > 0) { - /* add callback to unblank screen on gps event */ - navit_add_callback(nav, callback_new_attr_0(callback_cast (plugin_osso_display_on), attr_unsuspend_)); + /* add callback to unblank screen */ + navit_add_callback(nav, callback_new_attr_0(callback_cast (osso_display_on), attr_unsuspend)); } } void plugin_init(void) { - dbg(1, "Installing osso context for org.navit_project.navit\n"); - osso_context = osso_initialize("org.navit_project.navit", VERSION, TRUE, NULL); - if (osso_context == NULL) { - dbg(0, "error initiating osso context\n"); - } - osso_hw_set_event_cb(osso_context, NULL, osso_cb_hw_state, NULL); + //struct callback *cb; + + dbg(2, "enter\n"); + callback.u.callback = callback_new_attr_0(callback_cast(osso_navit), attr_navit); config_add_attr(config, &callback); - } void -- 2.7.4