summaryrefslogtreecommitdiff
path: root/android/main.c
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2013-11-29 10:08:49 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2013-11-29 10:33:13 +0200
commit13d5e9c49bbcd1b3f3ece84f5de5c7bbd47e2699 (patch)
treec4092471d0bae48e3296cdc78c215acd044917fe /android/main.c
parent85512df86d86f578fa1429415e37914c698ec12d (diff)
downloadbluez-13d5e9c49bbcd1b3f3ece84f5de5c7bbd47e2699.tar.gz
android/main: Call unregister for all registered services on exit
Diffstat (limited to 'android/main.c')
-rw-r--r--android/main.c34
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();