summaryrefslogtreecommitdiffstats
path: root/src/call-forwarding.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-08-17 15:14:05 -0500
committerDenis Kenzior <denkenz@gmail.com>2009-08-17 15:14:05 -0500
commit255c6ba0d9e34d517bd17614d12e44573eea62a9 (patch)
treef45c0ac35bb3e2601855ed5a85087dca9d1a7639 /src/call-forwarding.c
parent6d5090eafa3ea6f8c18dc67f2ad7c3428b50af88 (diff)
downloadofono-255c6ba0d9e34d517bd17614d12e44573eea62a9.tar.bz2
Cleanup atom watches properly
Diffstat (limited to 'src/call-forwarding.c')
-rw-r--r--src/call-forwarding.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index b5e26360..90f8579f 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -51,6 +51,7 @@ struct ofono_call_forwarding {
int query_end;
struct cf_ss_request *ss_req;
struct ofono_ussd *ussd;
+ unsigned int ussd_watch;
const struct ofono_call_forwarding_driver *driver;
void *driver_data;
struct ofono_atom *atom;
@@ -1115,6 +1116,9 @@ static void call_forwarding_unregister(struct ofono_atom *atom)
if (cf->ussd)
cf_unregister_ss_controls(cf);
+
+ if (cf->ussd_watch)
+ __ofono_modem_remove_atom_watch(modem, cf->ussd_watch);
}
static void call_forwarding_remove(struct ofono_atom *atom)
@@ -1202,8 +1206,10 @@ void ofono_call_forwarding_register(struct ofono_call_forwarding *cf)
ofono_modem_add_interface(modem, OFONO_CALL_FORWARDING_INTERFACE);
- __ofono_modem_add_atom_watch(modem, OFONO_ATOM_TYPE_USSD,
+ cf->ussd_watch = __ofono_modem_add_atom_watch(modem,
+ OFONO_ATOM_TYPE_USSD,
ussd_watch, cf, NULL);
+
ussd_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_USSD);
if (ussd_atom && __ofono_atom_get_registered(ussd_atom))