summaryrefslogtreecommitdiffstats
path: root/src/cdma-voicecall.c
diff options
context:
space:
mode:
authorDara Spieker-Doyle <dara.spiekerdoyle@gmail.com>2011-06-13 16:01:31 -0700
committerDenis Kenzior <denkenz@gmail.com>2011-06-12 17:47:27 -0500
commit388fe2f45ab4503176892b0299541352f13362e7 (patch)
treee3e42d4d5a049dd2b1ed286fe6e26b1d530dd93f /src/cdma-voicecall.c
parentb91726213cb50967d7d21d3ac4ca5addb4c2846d (diff)
downloadofono-388fe2f45ab4503176892b0299541352f13362e7.tar.bz2
cdma-voicecall: Fix for crash when unregistering atom
Diffstat (limited to 'src/cdma-voicecall.c')
-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)