2024-02-09 14:59:29

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH BlueZ v1] hog-lib: Don't destroy UHID device on detach

From: Luiz Augusto von Dentz <[email protected]>

This makes bt_hog_detach not to destroy UHID device which means the
device node don't need to be recreated in case of reconnections which
speeds up the process.

Fixes: https://github.com/bluez/bluez/issues/737
---
profiles/input/hog-lib.c | 48 ++++++++++++++++++++--------------------
1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/profiles/input/hog-lib.c b/profiles/input/hog-lib.c
index 7ff1ede3db35..67492a63eca3 100644
--- a/profiles/input/hog-lib.c
+++ b/profiles/input/hog-lib.c
@@ -1309,11 +1309,35 @@ static bool cancel_gatt_req(const void *data, const void *user_data)
return g_attrib_cancel(hog->attrib, req->id);
}

+static void uhid_destroy(struct bt_hog *hog)
+{
+ int err;
+ struct uhid_event ev;
+
+ if (!hog->uhid_created)
+ return;
+
+ bt_uhid_unregister_all(hog->uhid);
+
+ memset(&ev, 0, sizeof(ev));
+ ev.type = UHID_DESTROY;
+
+ err = bt_uhid_send(hog->uhid, &ev);
+
+ if (err < 0) {
+ error("bt_uhid_send: %s", strerror(-err));
+ return;
+ }
+
+ hog->uhid_created = false;
+}
+
static void hog_free(void *data)
{
struct bt_hog *hog = data;

bt_hog_detach(hog);
+ uhid_destroy(hog);

queue_destroy(hog->input, free);
queue_destroy(hog->bas, (void *) bt_bas_unref);
@@ -1823,29 +1847,6 @@ bool bt_hog_attach(struct bt_hog *hog, void *gatt)
return true;
}

-static void uhid_destroy(struct bt_hog *hog)
-{
- int err;
- struct uhid_event ev;
-
- if (!hog->uhid_created)
- return;
-
- bt_uhid_unregister_all(hog->uhid);
-
- memset(&ev, 0, sizeof(ev));
- ev.type = UHID_DESTROY;
-
- err = bt_uhid_send(hog->uhid, &ev);
-
- if (err < 0) {
- error("bt_uhid_send: %s", strerror(-err));
- return;
- }
-
- hog->uhid_created = false;
-}
-
void bt_hog_detach(struct bt_hog *hog)
{
GSList *l;
@@ -1879,7 +1880,6 @@ void bt_hog_detach(struct bt_hog *hog)
queue_remove_all(hog->gatt_op, cancel_gatt_req, hog, destroy_gatt_req);
g_attrib_unref(hog->attrib);
hog->attrib = NULL;
- uhid_destroy(hog);
}

int bt_hog_set_control_point(struct bt_hog *hog, bool suspend)
--
2.43.0



2024-02-09 16:07:31

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ,v1] hog-lib: Don't destroy UHID device on detach

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=824683

---Test result---

Test Summary:
CheckPatch PASS 0.40 seconds
GitLint PASS 0.27 seconds
BuildEll PASS 24.10 seconds
BluezMake PASS 719.49 seconds
MakeCheck PASS 11.81 seconds
MakeDistcheck PASS 163.75 seconds
CheckValgrind PASS 226.53 seconds
CheckSmatch PASS 326.81 seconds
bluezmakeextell PASS 107.07 seconds
IncrementalBuild PASS 673.84 seconds
ScanBuild PASS 944.04 seconds



---
Regards,
Linux Bluetooth