shell: Initialize input devices when initializing shell
authorTaekyun Kim <tkq.kim@samsung.com>
Wed, 16 Sep 2015 07:47:55 +0000 (16:47 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Wed, 16 Sep 2015 08:08:57 +0000 (17:08 +0900)
Shell may be loaded after input backend initialized. So, get input device
list and add them first.

Change-Id: Ie97e2601abfaf150fe5a8d38d3ac337c5f566730

src/lib/desktop-shell/shell.c

index bf3a209..1a1ab35 100644 (file)
@@ -240,14 +240,8 @@ shell_pointer_grab_interface_t shell_pointer_resize_grab =
 };
 
 static void
-input_device_add_callback(pepper_event_listener_t    *listener,
-                          pepper_object_t            *object,
-                          uint32_t                    id,
-                          void                       *info,
-                          void                       *data)
+shell_add_input_device(desktop_shell_t *shell, pepper_input_device_t *device)
 {
-    desktop_shell_t         *shell = (desktop_shell_t *)data;
-    pepper_input_device_t   *device = info;
     shell_seat_t            *shseat;
     pepper_seat_t           *seat;
     const char              *target_seat_name;
@@ -274,14 +268,8 @@ input_device_add_callback(pepper_event_listener_t    *listener,
 }
 
 static void
-seat_add_callback(pepper_event_listener_t    *listener,
-                  pepper_object_t            *object,
-                  uint32_t                    id,
-                  void                       *info,
-                  void                       *data)
+shell_add_seat(desktop_shell_t *shell, pepper_seat_t *seat)
 {
-    desktop_shell_t         *shell = data;
-    pepper_seat_t           *seat  = info;
     shell_seat_t            *shseat;
 
     pepper_list_for_each(shseat, &shell->shseat_list, link)
@@ -305,14 +293,8 @@ seat_add_callback(pepper_event_listener_t    *listener,
 }
 
 static void
-seat_remove_callback(pepper_event_listener_t    *listener,
-                     pepper_object_t            *object,
-                     uint32_t                    id,
-                     void                       *info,
-                     void                       *data)
+shell_remove_seat(desktop_shell_t *shell, pepper_seat_t *seat)
 {
-    desktop_shell_t         *shell = data;
-    pepper_seat_t           *seat  = info;
     shell_seat_t            *shseat;
 
     pepper_list_for_each(shseat, &shell->shseat_list, link)
@@ -327,6 +309,36 @@ seat_remove_callback(pepper_event_listener_t    *listener,
 }
 
 static void
+input_device_add_callback(pepper_event_listener_t    *listener,
+                          pepper_object_t            *object,
+                          uint32_t                    id,
+                          void                       *info,
+                          void                       *data)
+{
+    shell_add_input_device(data, info);
+}
+
+static void
+seat_add_callback(pepper_event_listener_t    *listener,
+                  pepper_object_t            *object,
+                  uint32_t                    id,
+                  void                       *info,
+                  void                       *data)
+{
+    shell_add_seat(data, info);
+}
+
+static void
+seat_remove_callback(pepper_event_listener_t    *listener,
+                     pepper_object_t            *object,
+                     uint32_t                    id,
+                     void                       *info,
+                     void                       *data)
+{
+    shell_remove_seat(data, info);
+}
+
+static void
 init_listeners(desktop_shell_t *shell)
 {
     pepper_object_t *compositor = (pepper_object_t *)shell->compositor;
@@ -345,6 +357,17 @@ init_listeners(desktop_shell_t *shell)
                                          0, seat_remove_callback, shell);
 }
 
+static void
+init_input(desktop_shell_t *shell)
+{
+    pepper_list_t *l;
+    const pepper_list_t *input_device_list =
+        pepper_compositor_get_input_device_list(shell->compositor);
+
+    pepper_list_for_each_list(l, input_device_list)
+        shell_add_input_device(shell, l->item);
+}
+
 PEPPER_API pepper_bool_t
 pepper_desktop_shell_init(pepper_compositor_t *compositor)
 {
@@ -379,6 +402,7 @@ pepper_desktop_shell_init(pepper_compositor_t *compositor)
     }
 
     init_listeners(shell);
+    init_input(shell);
 
     return PEPPER_TRUE;
 }