From 13d5e9c49bbcd1b3f3ece84f5de5c7bbd47e2699 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Fri, 29 Nov 2013 10:08:49 +0200 Subject: [PATCH] android/main: Call unregister for all registered services on exit --- android/main.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) 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(); -- 2.47.3