summaryrefslogtreecommitdiffstats
path: root/plugins/telit.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-06-08 04:23:07 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-06-08 04:24:20 -0500
commit56bef41eac1e2b996b8851a3a72fd26d6619c35e (patch)
tree8f8dd9aaac52a1911275cd44fb0d9f40314fad97 /plugins/telit.c
parent025fe0a74d1aa34a3c72054029d23ef4425abc6d (diff)
downloadofono-56bef41eac1e2b996b8851a3a72fd26d6619c35e.tar.bz2
telit: Make sure to clean up the source
Diffstat (limited to 'plugins/telit.c')
-rw-r--r--plugins/telit.c13
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);
}