diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2013-11-29 10:08:49 +0200 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2013-11-29 10:33:13 +0200 |
commit | 13d5e9c49bbcd1b3f3ece84f5de5c7bbd47e2699 (patch) | |
tree | c4092471d0bae48e3296cdc78c215acd044917fe /android/main.c | |
parent | 85512df86d86f578fa1429415e37914c698ec12d (diff) | |
download | bluez-13d5e9c49bbcd1b3f3ece84f5de5c7bbd47e2699.tar.gz |
android/main: Call unregister for all registered services on exit
Diffstat (limited to 'android/main.c')
-rw-r--r-- | android/main.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/android/main.c b/android/main.c index 2879bbf63..3a14af595 100644 --- a/android/main.c +++ b/android/main.c @@ -493,6 +493,38 @@ static void cleanup_hal_connection(void) ipc_cleanup(); } +static void cleanup_services(void) +{ + int i; + + DBG(""); + + for (i = HAL_SERVICE_ID_BLUETOOTH; i < HAL_SERVICE_ID_MAX; i++) { + if (!services[i]) + continue; + + switch (i) { + case HAL_SERVICE_ID_BLUETOOTH: + bt_bluetooth_unregister(); + break; + case HAL_SERVICE_ID_SOCK: + bt_socket_unregister(); + break; + case HAL_SERVICE_ID_HIDHOST: + bt_hid_unregister(); + break; + case HAL_SERVICE_ID_A2DP: + bt_a2dp_unregister(); + break; + case HAL_SERVICE_ID_PAN: + bt_pan_unregister(); + break; + } + + services[i] = false; + } +} + static bool set_capabilities(void) { #if defined(ANDROID) @@ -598,6 +630,8 @@ int main(int argc, char *argv[]) if (bluetooth_start_timeout > 0) g_source_remove(bluetooth_start_timeout); + cleanup_services(); + cleanup_hal_connection(); stop_sdp_server(); bt_bluetooth_cleanup(); |