diff options
author | Denis Kenzior <denkenz@gmail.com> | 2011-06-08 04:23:07 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-06-08 04:24:20 -0500 |
commit | 56bef41eac1e2b996b8851a3a72fd26d6619c35e (patch) | |
tree | 8f8dd9aaac52a1911275cd44fb0d9f40314fad97 /plugins/telit.c | |
parent | 025fe0a74d1aa34a3c72054029d23ef4425abc6d (diff) | |
download | ofono-56bef41eac1e2b996b8851a3a72fd26d6619c35e.tar.bz2 |
telit: Make sure to clean up the source
Diffstat (limited to 'plugins/telit.c')
-rw-r--r-- | plugins/telit.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/plugins/telit.c b/plugins/telit.c index 13cf703e..0b957ec7 100644 --- a/plugins/telit.c +++ b/plugins/telit.c @@ -60,6 +60,7 @@ static const char *qss_prefix[] = { "#QSS:", NULL }; struct telit_data { GAtChat *chat; struct ofono_sim *sim; + guint sim_inserted_source; }; static void telit_debug(const char *str, void *user_data) @@ -92,6 +93,9 @@ static void telit_remove(struct ofono_modem *modem) ofono_modem_set_data(modem, NULL); + if (data->sim_inserted_source > 0) + g_source_remove(data->sim_inserted_source); + g_free(data); } @@ -102,6 +106,8 @@ static gboolean sim_inserted_timeout_cb(gpointer user_data) DBG("%p", modem); + data->sim_inserted_source = 0; + ofono_sim_inserted_notify(data->sim, TRUE); return FALSE; @@ -121,7 +127,9 @@ static void switch_sim_state_status(struct ofono_modem *modem, int status) case 1: DBG("SIM inserted"); /* We need to sleep a bit */ - g_timeout_add_seconds(1, sim_inserted_timeout_cb, modem); + data->sim_inserted_source = g_timeout_add_seconds(1, + sim_inserted_timeout_cb, + modem); break; case 2: DBG("SIM inserted and PIN unlocked"); @@ -207,6 +215,9 @@ static void cfun_disable_cb(gboolean ok, GAtResult *result, gpointer user_data) g_at_chat_unref(data->chat); data->chat = NULL; + if (data->sim_inserted_source > 0) + g_source_remove(data->sim_inserted_source); + if (ok) ofono_modem_set_powered(modem, FALSE); } |