udev-seat: add apis to set udev monitor's event source and buffer size 28/187128/4 accepted/tizen/5.0/unified/20181102.030921 accepted/tizen/unified/20180821.091112 submit/tizen/20180820.112831 submit/tizen_5.0/20181101.000007
authorSung-Jin Park <sj76.park@samsung.com>
Mon, 20 Aug 2018 07:21:43 +0000 (16:21 +0900)
committerSung-Jin Park <sj76.park@samsung.com>
Mon, 20 Aug 2018 09:55:50 +0000 (18:55 +0900)
Change-Id: Ib41e5421c174e2d5cc26bc19f077a045ad7a2e19
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/libinput.h
src/libinput.sym
src/udev-seat.c

index 3496a47fa69a90ac3ae551e85307126c6711ce2c..13be6e7d7b209ff637ac90f5dd7d3a9e80b711c5 100644 (file)
@@ -3206,6 +3206,28 @@ int
 libinput_udev_assign_seat(struct libinput *libinput,
                          const char *seat_id);
 
+/**
+ * @ingroup base
+ *
+ * Set the event source of udev monitor.
+ * The default event source of udev monitor is "udev".
+ *
+ * @param source The event source of udev monitor
+ */
+void
+libinput_udev_set_udev_monitor_event_source(const char *source);
+
+/**
+ * @ingroup base
+ *
+ * Set the buffer size of udev monitor.
+ *
+ * @param size The buffer size of udev monitor.
+ * @return 0 on success or -1 on failure.
+ */
+int
+libinput_udev_set_udev_monitor_buffer_size(int size);
+
 /**
  * @ingroup base
  *
index f72e13f58dbd3b1ded02e6ee32d7def25b0a583b..4ef2c27b92c3893139b22e60f47326e90cac49d0 100644 (file)
@@ -309,4 +309,6 @@ LIBINPUT_1.7 {
        libinput_event_switch_get_switch;
        libinput_event_switch_get_time;
        libinput_event_switch_get_time_usec;
+       libinput_udev_set_udev_monitor_event_source;
+       libinput_udev_set_udev_monitor_buffer_size;
 } LIBINPUT_1.5;
index 4878c3cfb903208e84f064c2793e8f33f8c2ccb5..13a61b5f76eb9e57ce3d2bd940ae4d49b5253e03 100644 (file)
 static const char default_seat[] = "seat0";
 static const char default_seat_name[] = "default";
 
+char *_udev_monitor_event_source = NULL;
+int _udev_monitor_buffer_size = 0;
+
+static char *
+_udev_get_udev_monitor_event_source(void)
+{
+       return _udev_monitor_event_source;
+}
+
+static int
+_udev_get_udev_monitor_buffer_size(void)
+{
+       return _udev_monitor_buffer_size;
+}
+
 static struct udev_seat *
 udev_seat_create(struct udev_input *input,
                 const char *device_seat,
@@ -259,15 +274,18 @@ udev_input_enable(struct libinput *libinput)
        if (input->udev_monitor)
                return 0;
 
-       char *env;
+       char *env = _udev_get_udev_monitor_event_source();
 
-       if ((env = getenv("UDEV_MONITOR_EVENT_SOURCE")))
+       if (env)
        {
-               log_info(libinput, "udev: event source is %s.\n", env);
                input->udev_monitor = udev_monitor_new_from_netlink(udev, env);
+               log_info(libinput, "udev: event source is %s.\n", env);
        }
        else
+       {
                input->udev_monitor = udev_monitor_new_from_netlink(udev, "udev");
+               log_info(libinput, "udev: event source is udev (default event source).\n");
+       }
 
        if (!input->udev_monitor) {
                log_info(libinput,
@@ -275,8 +293,9 @@ udev_input_enable(struct libinput *libinput)
                return -1;
        }
 
-       env = getenv("UDEV_MONITOR_BUFFER_SIZE");
-       if (env && (buf_size = atoi(env)))
+    buf_size = _udev_get_udev_monitor_buffer_size();
+
+       if (buf_size)
        {
                log_info(libinput,"udev: set receive buffer size = %d\n", buf_size);
                udev_monitor_set_receive_buffer_size(input->udev_monitor, buf_size);
@@ -386,6 +405,31 @@ static const struct libinput_interface_backend interface_backend = {
        .device_change_seat = udev_device_change_seat,
 };
 
+LIBINPUT_EXPORT void
+libinput_udev_set_udev_monitor_event_source(const char *source)
+{
+       if (source)
+       {
+               if (_udev_monitor_event_source)
+               {
+                       free(_udev_monitor_event_source);
+                       _udev_monitor_event_source = NULL;
+               }
+
+               _udev_monitor_event_source = strdup(source);
+       }
+}
+
+LIBINPUT_EXPORT int
+libinput_udev_set_udev_monitor_buffer_size(int size)
+{
+       if (0 >= size)
+               return -1;
+
+       _udev_monitor_buffer_size = size;
+       return 0;
+}
+
 LIBINPUT_EXPORT struct libinput *
 libinput_udev_create_context(const struct libinput_interface *interface,
                             void *user_data,
@@ -408,6 +452,7 @@ libinput_udev_create_context(const struct libinput_interface *interface,
        }
 
        input->udev = udev_ref(udev);
+       _udev_monitor_event_source = strdup("udev");
 
        return &input->base;
 }