diff options
author | Denis Kenzior <denkenz@gmail.com> | 2009-08-17 15:14:05 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2009-08-17 15:14:05 -0500 |
commit | 255c6ba0d9e34d517bd17614d12e44573eea62a9 (patch) | |
tree | f45c0ac35bb3e2601855ed5a85087dca9d1a7639 /src/call-settings.c | |
parent | 6d5090eafa3ea6f8c18dc67f2ad7c3428b50af88 (diff) | |
download | ofono-255c6ba0d9e34d517bd17614d12e44573eea62a9.tar.bz2 |
Cleanup atom watches properly
Diffstat (limited to 'src/call-settings.c')
-rw-r--r-- | src/call-settings.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/call-settings.c b/src/call-settings.c index 249ff508..6928ee2e 100644 --- a/src/call-settings.c +++ b/src/call-settings.c @@ -61,6 +61,7 @@ struct ofono_call_settings { int ss_req_cls; enum call_setting_type ss_setting; struct ofono_ussd *ussd; + unsigned int ussd_watch; const struct ofono_call_settings_driver *driver; void *driver_data; struct ofono_atom *atom; @@ -1178,6 +1179,9 @@ static void call_settings_unregister(struct ofono_atom *atom) if (cs->ussd) cs_unregister_ss_controls(cs); + + if (cs->ussd_watch) + __ofono_modem_remove_atom_watch(modem, cs->ussd_watch); } static void call_settings_remove(struct ofono_atom *atom) @@ -1268,8 +1272,10 @@ void ofono_call_settings_register(struct ofono_call_settings *cs) ofono_modem_add_interface(modem, OFONO_CALL_SETTINGS_INTERFACE); - __ofono_modem_add_atom_watch(modem, OFONO_ATOM_TYPE_USSD, + cs->ussd_watch = __ofono_modem_add_atom_watch(modem, + OFONO_ATOM_TYPE_USSD, ussd_watch, cs, NULL); + ussd_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_USSD); if (ussd_atom && __ofono_atom_get_registered(ussd_atom)) |