From: JengHyun Kang Date: Mon, 22 Aug 2016 07:54:29 +0000 (+0900) Subject: evdev: Do not open the already opened device X-Git-Tag: submit/tizen/20160823.022539~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3b377342eac74472be2dc3fb54fd59c052e703c4;p=platform%2Fupstream%2Flibinput.git evdev: Do not open the already opened device Change-Id: I96ba5287f28dfa301628232a5a6a02f1baf1c7a2 --- diff --git a/src/evdev.c b/src/evdev.c index 3f8708c5..4067062a 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1771,6 +1771,7 @@ evdev_device_create(struct libinput_seat *seat, int unhandled_device = 0; const char *devnode; char buf[STRERR_BUFSIZE] = {0, }; + struct libinput_device *dev; #ifdef HAVE_INPUT_SET_DEFAULT_PROPERTY if (input_set_default_property(udev_device) < 0) @@ -1778,6 +1779,15 @@ evdev_device_create(struct libinput_seat *seat, #endif devnode = udev_device_get_devnode(udev_device); + list_for_each(dev, &seat->devices_list, link) { + struct evdev_device *d = (struct evdev_device*)dev; + if (strcmp(devnode, udev_device_get_devnode(d->udev_device))== 0) { + log_info(libinput, + "%s device is already opened\n", d->devname); + goto err; + } + } + /* Use non-blocking mode so that we can loop on read on * evdev_device_data() until all events on the fd are * read. mtdev_get() also expects this. */