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: accepted/tizen/unified/20250205.095548~57 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d5f7bdf91ee35bfa3a4da0ac7258736787461aa6;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 7ce55a6c..c1f50303 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2439,6 +2439,7 @@ evdev_device_create(struct libinput_seat *seat, const char *devnode; char *sysname = str_sanitize(udev_device_get_sysname(udev_device)); char buf[STRERR_BUFSIZE] = {0, }; + struct libinput_device *dev; #ifdef HAVE_INPUT_SET_DEFAULT_PROPERTY if (input_set_default_property(udev_device) < 0) @@ -2456,6 +2457,15 @@ evdev_device_create(struct libinput_seat *seat, goto err; } + 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); + return NULL; + } + } + /* 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. */