e_seat: Move seat list into e_seat 46/318446/2
authorJihoon Kim <jihoon48.kim@samsung.com>
Sun, 12 Jan 2025 06:21:35 +0000 (15:21 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 17 Jan 2025 06:09:29 +0000 (06:09 +0000)
Change-Id: I3cfd4cd5061bfd1fdc5564d17e3356cedc21a3bb
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/bin/inputmgr/e_seat.c
src/bin/inputmgr/e_seat_intern.h
src/bin/server/e_comp_wl_input.c
src/bin/server/e_devicemgr_wl.c
src/bin/windowmgr/services/e_service_volume.c
src/include/e_comp_wl.h

index de234af5e0f06ad6c8f98e710166c8df0d840625..0857ad4e43321f7abf2454068d402b7126b6c38e 100644 (file)
@@ -11,6 +11,7 @@
 #include "e_utils_intern.h"
 
 static Eina_List *_ecore_event_handlers = NULL;
+static Eina_List *_seats = NULL;
 
 static void
 _e_seat_cb_pointer_unbind(struct wl_resource *resource)
@@ -515,6 +516,14 @@ e_seat_shutdown()
       ecore_event_handler_del(h);
 
    _ecore_event_handlers = NULL;
+
+   e_seat_destroy_all();
+}
+
+EINTERN Eina_List *
+e_seat_list_get()
+{
+   return _seats;
 }
 
 EINTERN E_Seat *
@@ -544,7 +553,7 @@ e_seat_create(const char *seat_name)
      }
    seat->resources = NULL;
 
-   comp_wl->seats = eina_list_append(comp_wl->seats, seat);
+   _seats = eina_list_append(_seats, seat);
 
    return seat;
 }
@@ -552,7 +561,6 @@ e_seat_create(const char *seat_name)
 EINTERN void
 e_seat_destroy(E_Seat *seat)
 {
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    struct wl_resource *res;
 
    EINA_LIST_FREE(seat->ptr.resources, res)
@@ -562,7 +570,7 @@ e_seat_destroy(E_Seat *seat)
    EINA_LIST_FREE(seat->resources, res)
       wl_resource_destroy(res);
 
-   comp_wl->seats = eina_list_remove(comp_wl->seats, seat);
+   _seats = eina_list_remove(_seats, seat);
    wl_global_destroy(seat->global);
 }
 
@@ -579,9 +587,8 @@ e_seat_find(const char *name)
 {
    Eina_List *l;
    E_Seat *seat;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
 
-   EINA_LIST_FOREACH(comp_wl->seats, l, seat)
+   EINA_LIST_FOREACH(_seats, l, seat)
      {
         if (seat->name && !strcmp(seat->name, name))
           return seat;
@@ -621,7 +628,6 @@ e_seat_touch_send_motion(E_Seat *seat, struct wl_client *wc,
 {
    Eina_List *l, *ll;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Seat *s;
 
    if (!seat) goto iterate;
@@ -636,7 +642,7 @@ e_seat_touch_send_motion(E_Seat *seat, struct wl_client *wc,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->touch.resources, ll, res)
           {
@@ -684,7 +690,7 @@ e_seat_touch_send_downup(E_Seat *seat, struct wl_client *wc,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->touch.resources, ll, res)
           {
@@ -712,7 +718,6 @@ e_seat_touch_send_cancel(E_Seat *seat, struct wl_client *wc, E_Client *ec)
 {
    Eina_List *l, *ll;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Seat *s;
 
    if (!seat) goto iterate;
@@ -729,7 +734,7 @@ e_seat_touch_send_cancel(E_Seat *seat, struct wl_client *wc, E_Client *ec)
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->touch.resources, ll, res)
           {
@@ -748,7 +753,6 @@ e_seat_touch_send_frame(E_Seat *seat, struct wl_client *wc)
 {
    Eina_List *l, *ll;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Seat *s;
 
    if (!seat) goto iterate;
@@ -763,7 +767,7 @@ e_seat_touch_send_frame(E_Seat *seat, struct wl_client *wc)
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->touch.resources, ll, res)
           {
@@ -794,8 +798,7 @@ e_seat_touch_is_empty(E_Seat *seat)
 
 iterate:
    Eina_List *l;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
-   EINA_LIST_FOREACH(comp_wl->seats, l, seat)
+   EINA_LIST_FOREACH(_seats, l, seat)
      {
         if (eina_list_count(seat->touch.resources))
           return EINA_FALSE;
@@ -816,7 +819,6 @@ e_seat_pointer_send_motion(E_Seat *seat, struct wl_client *wc,
 {
    Eina_List *l, *ll;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Seat *s;
 
    if (!seat) goto iterate;
@@ -833,7 +835,7 @@ e_seat_pointer_send_motion(E_Seat *seat, struct wl_client *wc,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->ptr.resources, ll, res)
           {
@@ -875,7 +877,7 @@ e_seat_pointer_send_enter(E_Seat *seat, struct wl_client *wc, E_Client *ec,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->ptr.resources, ll, res)
           {
@@ -919,7 +921,7 @@ e_seat_pointer_send_leave(E_Seat *seat, struct wl_client *wc, E_Client *ec,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->ptr.resources, ll, res)
           {
@@ -963,7 +965,7 @@ e_seat_pointer_send_button(E_Seat *seat, struct wl_client *wc,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->ptr.resources, ll, res)
           {
@@ -982,7 +984,6 @@ e_seat_pointer_send_axis(E_Seat *seat, struct wl_client *wc,
 {
    Eina_List *l, *ll;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
    E_Seat *s;
 
    if (!seat) goto iterate;
@@ -997,7 +998,7 @@ e_seat_pointer_send_axis(E_Seat *seat, struct wl_client *wc,
    return;
 
 iterate:
-   EINA_LIST_FOREACH(comp_wl->seats, l, s)
+   EINA_LIST_FOREACH(_seats, l, s)
      {
         EINA_LIST_FOREACH(s->ptr.resources, ll, res)
           {
@@ -1029,8 +1030,7 @@ e_seat_pointer_enabled_get(E_Seat *seat)
 
 iterate:
    Eina_List *l;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
-   EINA_LIST_FOREACH(comp_wl->seats, l, seat)
+   EINA_LIST_FOREACH(_seats, l, seat)
      {
         if (seat->ptr.enabled) return EINA_TRUE;
      }
@@ -1048,8 +1048,7 @@ e_seat_pointer_is_empty(E_Seat *seat)
 
 iterate:
    Eina_List *l;
-   E_Comp_Wl_Data *comp_wl = e_comp_wl_get();
-   EINA_LIST_FOREACH(comp_wl->seats, l, seat)
+   EINA_LIST_FOREACH(_seats, l, seat)
      {
         if (eina_list_count(seat->ptr.resources))
           return EINA_FALSE;
@@ -1070,3 +1069,13 @@ e_seat_keyboard_check(struct wl_resource *res)
    return wl_resource_instance_of(res, &wl_keyboard_interface,
                                   &_e_keyboard_interface);
 }
+
+EINTERN void
+e_seat_destroy_all()
+{
+  E_Seat *seat;
+  EINA_LIST_FREE(_seats, seat)
+    {
+       e_seat_destroy(seat);
+    }
+}
index 323762b9c50a3c4eef942529dee66d70949e6025..897fd309c5da978143a3f7315aea71a674023248 100644 (file)
@@ -16,6 +16,10 @@ EINTERN void        e_seat_shutdown();
 
 EINTERN E_Seat     *e_seat_create(const char *seat_name);
 EINTERN void        e_seat_destroy(E_Seat *seat);
+EINTERN void        e_seat_destroy_all();
+
+EINTERN Eina_List  *e_seat_list_get();
+
 EINTERN E_Zone     *e_seat_zone_get(E_Seat *seat);
 EINTERN E_Seat     *e_seat_find(const char *name);
 EINTERN void        e_seat_update_seat_caps(E_Seat *seat, struct wl_client *wc);
index 9182ecf3c12d3f01bcc7078ee65aa30dc4d734d2..56682279075a9e0e0d1d5033ef75e332feab4e68 100644 (file)
@@ -1231,11 +1231,7 @@ e_comp_wl_input_shutdown(void)
      wl_global_destroy(comp_wl->ptr_constraints.global);
    comp_wl->ptr_constraints.global = NULL;
 
-  E_Seat *seat;
-  EINA_LIST_FREE(comp_wl->seats, seat)
-    {
-       e_seat_destroy(seat);
-    }
+   e_seat_destroy_all();
 
    dont_set_e_input_keymap = EINA_FALSE;
    dont_use_xkb_cache = EINA_FALSE;
index bc4ba5f587f31ebfbb9078348ff19d5f55664977..5cdea5c109d3303632a82b479c7bbfc12d7cedea 100644 (file)
@@ -339,7 +339,7 @@ e_devicemgr_wl_touch_max_count_send(int slot, struct wl_resource *res, struct wl
      {
         E_Seat *seat;
         Eina_List *lll;
-        EINA_LIST_FOREACH(comp_wl->seats, lll, seat)
+        EINA_LIST_FOREACH(e_seat_list_get(), lll, seat)
           {
              EINA_LIST_FOREACH(seat->resources, l, seat_resource)
                {
@@ -752,7 +752,7 @@ _e_devicemgr_wl_cb_bind(struct wl_client *client, void *data, uint32_t version,
    comp_wl = e_comp_wl_get();
    E_Seat *seat;
    Eina_List *lll;
-   EINA_LIST_FOREACH(comp_wl->seats, lll, seat)
+   EINA_LIST_FOREACH(e_seat_list_get(), lll, seat)
      {
         EINA_LIST_FOREACH(seat->resources, l, seat_res)
           {
index 9faaff937d62682b45d895e1fad3db951bc0a9d7..fdbcdca059dd6b6ea61b6bd81edd0491100cb550 100644 (file)
@@ -5,6 +5,7 @@
 #include "e_view_intern.h"
 #include "e_view_client_intern.h"
 #include "e_comp_wl_intern.h"
+#include "e_seat_intern.h"
 
 #include <wayland-server.h>
 #include <tzsh_server.h>
@@ -449,7 +450,6 @@ _volume_wl_touch_resource_get(void)
    Eina_List *l, *ll;
    struct wl_client *wc;
    struct wl_resource *res;
-   E_Comp_Wl_Data *comp_wl;
    E_Seat *seat;
 
    E_Comp_Wl_Client_Data *volume_cdata = e_client_cdata_get(_volume_ec);
@@ -457,8 +457,7 @@ _volume_wl_touch_resource_get(void)
    if (_volume_wl_touch) goto end;
 
    wc = wl_resource_get_client(volume_cdata->surface);
-   comp_wl = e_comp_wl_get();
-   EINA_LIST_FOREACH(comp_wl->seats, l, seat)
+   EINA_LIST_FOREACH(e_seat_list_get(), l, seat)
      {
         EINA_LIST_FOREACH(seat->touch.resources, ll, res)
           {
index 3e51ab0c4b7ddf49798119dfd3ad1980a7353ae9..920ae9ba3f9263c62c2c72825ecf5969343ab252 100644 (file)
@@ -283,7 +283,7 @@ struct _E_Comp_Wl_Data
              struct wl_resource *resource;
           } im;
      } E_DEPRECATED seat;
-   Eina_List *seats;
+   E_DEPRECATED Eina_List *seats;
 
    struct
      {