summaryrefslogtreecommitdiffstats
path: root/src/handsfree-audio.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2013-02-26 14:09:15 -0600
committerDenis Kenzior <denkenz@gmail.com>2013-02-26 14:14:46 -0600
commit44281e53a9be904865a0bc451a283652123c3167 (patch)
tree70f9b34ea6456411f50b1e2c013d3fa08c66c5bd /src/handsfree-audio.c
parentf3a7069c47a2d97a78e17c637b5fc09985cbcf8a (diff)
downloadofono-44281e53a9be904865a0bc451a283652123c3167.tar.bz2
handsfree-audio: Unregister from DBus on removal
Diffstat (limited to 'src/handsfree-audio.c')
-rw-r--r--src/handsfree-audio.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/handsfree-audio.c b/src/handsfree-audio.c
index e8130cd7..289d7d9d 100644
--- a/src/handsfree-audio.c
+++ b/src/handsfree-audio.c
@@ -123,6 +123,16 @@ int ofono_handsfree_card_register(struct ofono_handsfree_card *card)
return 0;
}
+static void card_unregister(struct ofono_handsfree_card *card)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+
+ g_dbus_unregister_interface(conn, card->path, HFP_AUDIO_CARD_INTERFACE);
+
+ g_free(card->path);
+ card->path = NULL;
+}
+
void ofono_handsfree_card_remove(struct ofono_handsfree_card *card)
{
DBG("%p", card);
@@ -130,11 +140,13 @@ void ofono_handsfree_card_remove(struct ofono_handsfree_card *card)
if (card == NULL)
return;
+ if (card->path)
+ card_unregister(card);
+
card_list = g_slist_remove(card_list, card);
g_free(card->remote);
g_free(card->local);
- g_free(card->path);
g_free(card);
}