From be61ef7476cd9d6c4eb53c8f6b631a91218b4da2 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Mon, 23 Feb 2009 14:10:54 +0200 Subject: Only send unplug in case of ENOENT --- input/server.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'input') diff --git a/input/server.c b/input/server.c index b20570b7..af15282f 100644 --- a/input/server.c +++ b/input/server.c @@ -26,6 +26,7 @@ #endif #include +#include #include #include @@ -80,6 +81,7 @@ static void connect_event_cb(GIOChannel *chan, GError *err, gpointer data) uint16_t psm; bdaddr_t src, dst; GError *gerr = NULL; + int ret; if (err) { error("%s", err->message); @@ -100,9 +102,10 @@ static void connect_event_cb(GIOChannel *chan, GError *err, gpointer data) debug("Incoming connection on PSM %d", psm); - if (input_device_set_channel(&src, &dst, psm, chan) < 0) { + ret = input_device_set_channel(&src, &dst, psm, chan); + if (ret < 0) { /* Send unplug virtual cable to unknown devices */ - if (psm == L2CAP_PSM_HIDP_CTRL) { + if (ret == -ENOENT && psm == L2CAP_PSM_HIDP_CTRL) { unsigned char unplug = 0x15; int err, sk = g_io_channel_unix_get_fd(chan); err = write(sk, &unplug, sizeof(unplug)); @@ -113,7 +116,6 @@ static void connect_event_cb(GIOChannel *chan, GError *err, gpointer data) if (psm == L2CAP_PSM_HIDP_INTR) { struct authorization_data *auth; - int ret; auth = g_new0(struct authorization_data, 1); bacpy(&auth->src, &src); -- cgit