From 56bef41eac1e2b996b8851a3a72fd26d6619c35e Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 8 Jun 2011 04:23:07 -0500 Subject: telit: Make sure to clean up the source --- plugins/telit.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'plugins/telit.c') 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); } -- cgit v1.2.3