1
--- ./input/device.h.orig 2010-09-08 09:27:53.000000000 -0600
2
+++ ./input/device.h 2013-02-19 22:03:40.310100075 -0700
4
int (*disconnect) (struct input_conn *iconn);
6
const struct input_device *idev;
11
int fake_input_register(DBusConnection *conn, struct btd_device *device,
13
int input_device_set_channel(const bdaddr_t *src, const bdaddr_t *dst, int psm,
15
int input_device_close_channels(const bdaddr_t *src, const bdaddr_t *dst);
17
+void input_device_request_disconnect(const struct input_device *idev);
18
--- ./input/fakehid.c.orig 2013-02-19 22:01:58.524706809 -0700
19
+++ ./input/fakehid.c 2013-02-19 22:03:40.310100075 -0700
24
+static gboolean ps3remote_idle(gpointer data)
26
+ struct fake_input *fake = data;
27
+ input_device_request_disconnect(fake->idev);
31
static gboolean ps3remote_event(GIOChannel *chan, GIOCondition cond,
38
+ if (fake->idle_timeout) {
39
+ g_source_remove(fake->idle_timeout);
40
+ fake->idle_timeout = 0;
43
+ fake->idle_timeout = g_timeout_add(fake->timeout, ps3remote_idle, fake);
50
static int fake_hid_common_disconnect(struct fake_input *fake)
52
+ if (fake->idle_timeout) {
53
+ g_source_remove(fake->idle_timeout);
54
+ fake->idle_timeout = 0;
59
--- ./input/device.c.orig 2011-12-21 15:53:54.000000000 -0700
60
+++ ./input/device.c 2013-02-19 22:03:40.306100021 -0700
62
fake->disconnect = fake_hid_disconnect;
63
fake->priv = fake_hid;
65
+ fake->timeout = iconn->timeout * 1000;
66
fake = fake_hid_connadd(fake, iconn->intr_io, fake_hid);
74
+void input_device_request_disconnect(const struct input_device *idev)
76
+ device_request_disconnect(idev->device, NULL);