From 388fe2f45ab4503176892b0299541352f13362e7 Mon Sep 17 00:00:00 2001 From: Dara Spieker-Doyle Date: Mon, 13 Jun 2011 16:01:31 -0700 Subject: cdma-voicecall: Fix for crash when unregistering atom --- src/cdma-voicecall.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') 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) -- cgit v1.2.3