summaryrefslogtreecommitdiffstats
path: root/drivers/stemodem
diff options
context:
space:
mode:
authorJeevaka Badrappan <jeevaka.badrappan@elektrobit.com>2011-01-29 11:03:37 -0800
committerMarcel Holtmann <marcel@holtmann.org>2011-01-31 10:48:56 +0100
commit1f0318d244761fb55ccdecf71abaefe6c21e52a8 (patch)
treea59239aefd179b7b68be7a06ddfc89d28a409db8 /drivers/stemodem
parent6433af838d202610518df13b657942bc8c271d5f (diff)
downloadofono-1f0318d244761fb55ccdecf71abaefe6c21e52a8.tar.bz2
stemodem: fix issue with gatchat usage
Diffstat (limited to 'drivers/stemodem')
-rw-r--r--drivers/stemodem/radio-settings.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/stemodem/radio-settings.c b/drivers/stemodem/radio-settings.c
index 5b501263..d6ed2e10 100644
--- a/drivers/stemodem/radio-settings.c
+++ b/drivers/stemodem/radio-settings.c
@@ -187,6 +187,15 @@ static void ste_set_rat_mode(struct ofono_radio_settings *rs,
}
}
+static gboolean ste_radio_settings_register(gpointer user)
+{
+ struct ofono_radio_settings *rs = user;
+
+ ofono_radio_settings_register(rs);
+
+ return FALSE;
+}
+
static int ste_radio_settings_probe(struct ofono_radio_settings *rs,
unsigned int vendor, void *data)
{
@@ -197,10 +206,10 @@ static int ste_radio_settings_probe(struct ofono_radio_settings *rs,
if (rsd == NULL)
return -ENOMEM;
- rsd->chat = chat;
+ rsd->chat = g_at_chat_clone(chat);
ofono_radio_settings_set_data(rs, rsd);
- ofono_radio_settings_register(rs);
+ g_idle_add(ste_radio_settings_register, rs);
return 0;
}
@@ -209,6 +218,8 @@ static void ste_radio_settings_remove(struct ofono_radio_settings *rs)
{
struct radio_settings_data *rsd = ofono_radio_settings_get_data(rs);
ofono_radio_settings_set_data(rs, NULL);
+
+ g_at_chat_unref(rsd->chat);
g_free(rsd);
}