Diff between b111b5e15eb74e08b74cb3c7e91bcb21f54be4c7 and 9c52188d753002a6afd6ae145f921a2ff52c1c81

Changed Files

File Additions Deletions Status
profiles/input/device.c +0 -5 modified
profiles/input/device.h +0 -1 modified
profiles/input/hog.c +12 -2 modified

Full Patch

diff --git a/profiles/input/device.c b/profiles/input/device.c
index a7bc4d4..3642cc3 100644
--- a/profiles/input/device.c
+++ b/profiles/input/device.c
@@ -112,11 +112,6 @@ void input_set_userspace_hid(char *state)
 		error("Unknown value '%s'", state);
 }
 
-uint8_t input_get_userspace_hid(void)
-{
-	return uhid_state;
-}
-
 void input_set_classic_bonded_only(bool state)
 {
 	classic_bonded_only = state;
diff --git a/profiles/input/device.h b/profiles/input/device.h
index 036a889..9056695 100644
--- a/profiles/input/device.h
+++ b/profiles/input/device.h
@@ -22,7 +22,6 @@ struct input_conn;
 
 void input_set_idle_timeout(int timeout);
 void input_set_userspace_hid(char *state);
-uint8_t input_get_userspace_hid(void);
 void input_set_classic_bonded_only(bool state);
 bool input_get_classic_bonded_only(void);
 
diff --git a/profiles/input/hog.c b/profiles/input/hog.c
index f82648f..a3c876c 100644
--- a/profiles/input/hog.c
+++ b/profiles/input/hog.c
@@ -40,7 +40,6 @@
 #include "src/shared/gatt-client.h"
 #include "src/plugin.h"
 
-#include "device.h"
 #include "suspend.h"
 #include "attrib/att.h"
 #include "attrib/gattrib.h"
@@ -55,6 +54,7 @@ struct hog_device {
 
 static gboolean suspend_supported = FALSE;
 static bool auto_sec = true;
+static bool uhid_state_persist = false;
 static struct queue *devices = NULL;
 
 static void hog_device_accept(struct hog_device *dev, struct gatt_db *db)
@@ -203,7 +203,7 @@ static int hog_disconnect(struct btd_service *service)
 {
 	struct hog_device *dev = btd_service_get_user_data(service);
 
-	if (input_get_userspace_hid() == UHID_PERSIST)
+	if (uhid_state_persist)
 		bt_hog_detach(dev->hog, false);
 	else
 		bt_hog_detach(dev->hog, true);
@@ -229,6 +229,7 @@ static void hog_read_config(void)
 	GKeyFile *config;
 	GError *err = NULL;
 	bool config_auto_sec;
+	char *uhid_enabled;
 
 	config = g_key_file_new();
 	if (!config) {
@@ -253,6 +254,15 @@ static void hog_read_config(void)
 	} else
 		g_clear_error(&err);
 
+	uhid_enabled = g_key_file_get_string(config, "General",
+					"UserspaceHID", &err);
+	if (!err) {
+		DBG("input.conf: UserspaceHID=%s", uhid_enabled);
+		uhid_state_persist = strcasecmp(uhid_enabled, "persist") == 0;
+		free(uhid_enabled);
+	} else
+		g_clear_error(&err);
+
 	g_key_file_free(config);
 }