From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ v4 1/3] hog-lib: Don't destroy UHID device on detach
Date: Mon, 12 Feb 2024 17:31:44 -0500 [thread overview]
Message-ID: <20240212223146.4142264-1-luiz.dentz@gmail.com> (raw)
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
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
next reply other threads:[~2024-02-12 22:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-12 22:31 Luiz Augusto von Dentz [this message]
2024-02-12 22:31 ` [PATCH BlueZ v4 2/3] input.conf: Make UserspaceHID defaults to true Luiz Augusto von Dentz
2024-02-12 22:31 ` [PATCH BlueZ v4 3/3] input/device: Don't destroy UHID device on disconnect Luiz Augusto von Dentz
2024-02-12 23:54 ` [BlueZ,v4,1/3] hog-lib: Don't destroy UHID device on detach bluez.test.bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240212223146.4142264-1-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).