summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cdma-voicecall.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/cdma-voicecall.c b/src/cdma-voicecall.c
index a590063e..183433de 100644
--- a/src/cdma-voicecall.c
+++ b/src/cdma-voicecall.c
@@ -335,6 +335,18 @@ void ofono_cdma_voicecall_driver_unregister(
g_drivers = g_slist_remove(g_drivers, (void *)d);
}
+static void cdma_voicecall_unregister(struct ofono_atom *atom)
+{
+ DBusConnection *conn = ofono_dbus_get_connection();
+ struct ofono_modem *modem = __ofono_atom_get_modem(atom);
+ const char *path = __ofono_atom_get_path(atom);
+
+ g_dbus_unregister_interface(conn, path,
+ OFONO_CDMA_VOICECALL_MANAGER_INTERFACE);
+ ofono_modem_remove_interface(modem,
+ OFONO_CDMA_VOICECALL_MANAGER_INTERFACE);
+}
+
static void voicecall_manager_remove(struct ofono_atom *atom)
{
struct ofono_cdma_voicecall *vc = __ofono_atom_get_data(atom);
@@ -405,6 +417,8 @@ void ofono_cdma_voicecall_register(struct ofono_cdma_voicecall *vc)
ofono_modem_add_interface(modem,
OFONO_CDMA_VOICECALL_MANAGER_INTERFACE);
+
+ __ofono_atom_register(vc->atom, cdma_voicecall_unregister);
}
void ofono_cdma_voicecall_remove(struct ofono_cdma_voicecall *vc)