e_tizen_wl_shell: make e_tizen_wl_shell_taskbar.c file 05/325605/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 30 May 2025 04:57:38 +0000 (13:57 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 12 Jun 2025 10:40:32 +0000 (19:40 +0900)
Move the taskbar impelementation to this e_tizen_ws_shell_taskbar.c file.

Change-Id: Ib0231b581a2fe6797b60ac4aa5fb84d71855596c

src/bin/Makefile.mk
src/bin/meson.build
src/bin/server/e_tizen_ws_shell_manager.c
src/bin/server/e_tizen_ws_shell_srv_taskbar.c [new file with mode: 0644]
src/bin/server/e_tizen_ws_shell_srv_taskbar_intern.h [new file with mode: 0644]

index bb42d3275272f1d9dd644b63b35743d2ffe1e551..5e4b62587cb12d2efa6c4982ab2bdc7cca80658c 100644 (file)
@@ -214,6 +214,7 @@ src/bin/server/e_tizen_ws_shell_srv_screensaver.c \
 src/bin/server/e_tizen_ws_shell_srv_softkey.c \
 src/bin/server/e_tizen_ws_shell_srv_magnifier.c \
 src/bin/server/e_tizen_ws_shell_srv_launcher.c \
+src/bin/server/e_tizen_ws_shell_srv_taskbar.c \
 src/bin/server/e_tizen_indicator.c \
 src/bin/server/e_tizen_clipboard.c \
 src/bin/server/e_surface_view.c \
index bb48b5b67eb7fa738b140ce4dfe2a0ac31eb0436..3a1116d292342d1e6eb72f19bf49a05d8cb5f11c 100644 (file)
@@ -218,6 +218,7 @@ e_sources = [
   'server/e_tizen_ws_shell_srv_softkey.c',
   'server/e_tizen_ws_shell_srv_magnifier.c',
   'server/e_tizen_ws_shell_srv_launcher.c',
+  'server/e_tizen_ws_shell_srv_taskbar.c',
   'server/e_tizen_indicator.c',
   'server/e_tizen_clipboard.c',
   'server/e_surface_view.c',
index 3fc7385c5d283ab527ae7bd802a1cc55bde5ccea..bab5210ba271e36585d125aa1abf4786da93a894 100644 (file)
@@ -2,7 +2,6 @@
 #include "services/e_service_quickpanel_intern.h"
 #include "services/e_service_volume_intern.h"
 #include "services/e_service_launcher_intern.h"
-#include "services/e_service_taskbar_intern.h"
 #include "services/e_service_kvm_intern.h"
 #include "services/e_service_softkey_intern.h"
 #include "e_comp_intern.h"
@@ -22,6 +21,7 @@
 #include "e_tizen_ws_shell_srv_softkey_intern.h"
 #include "e_tizen_ws_shell_srv_magnifier_intern.h"
 #include "e_tizen_ws_shell_srv_launcher_intern.h"
+#include "e_tizen_ws_shell_srv_taskbar_intern.h"
 
 #include <tzsh_server.h>
 
@@ -839,73 +839,10 @@ _tzsh_srv_iface_cb_launcher_get(struct wl_client *client, struct wl_resource *re
      }
 }
 
-static void
-_tzsh_srv_taskbar_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   wl_resource_destroy(resource);
-}
-
-static void
-_tzsh_srv_taskbar_cb_place_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t place_type)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   E_Client *ec;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   ec = tzsh_srv->ec;
-   EINA_SAFETY_ON_NULL_RETURN(ec);
-
-   e_service_taskbar_place_type_set(ec, place_type);
-}
-
-static void
-_tzsh_srv_taskbar_cb_size_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t width, uint32_t height)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   E_Client *ec;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   ec = tzsh_srv->ec;
-   EINA_SAFETY_ON_NULL_RETURN(ec);
-
-   e_service_taskbar_size_set(ec, width, height);
-}
-
-static void
-_tzsh_srv_taskbar_cb_auto_placement_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t auto_placement)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   E_Client *ec;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   ec = tzsh_srv->ec;
-   EINA_SAFETY_ON_NULL_RETURN(ec);
-
-   e_service_taskbar_auto_placement_set(ec, auto_placement);
-}
-
-static const struct tws_service_taskbar_interface _tzsh_srv_taskbar_iface =
-{
-   _tzsh_srv_taskbar_cb_destroy,
-   _tzsh_srv_taskbar_cb_place_type_set,
-   _tzsh_srv_taskbar_cb_size_set,
-   _tzsh_srv_taskbar_cb_auto_placement_set,
-};
-
 static void
 _tzsh_srv_iface_cb_taskbar_get(struct wl_client *client, struct wl_resource *res_tzsh_srv, uint32_t id)
 {
    E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   struct wl_resource *res;
 
    tzsh_srv = wl_resource_get_user_data(res_tzsh_srv);
    EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
@@ -914,17 +851,24 @@ _tzsh_srv_iface_cb_taskbar_get(struct wl_client *client, struct wl_resource *res
    if (!eina_list_data_find(g_tizen_ws_shell_mgr->tzsh_srvs, tzsh_srv))
      return;
 
-   res = wl_resource_create(client,
-                            &tws_service_taskbar_interface,
-                            1,
-                            id);
-   if (!res)
+   if (tzsh_srv->role != TZSH_SRV_ROLE_TASKBAR)
      {
-        wl_client_post_no_memory(client);
+        ERR("Could not find taskbar service");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                  TIZEN_WS_SHELL_ERROR_NO_SERVICE);
         return;
      }
 
-   wl_resource_set_implementation(res, &_tzsh_srv_taskbar_iface, tzsh_srv, NULL);
+   tzsh_srv->client = client;
+   tzsh_srv->id = id;
+
+   if (!e_tizen_ws_shell_srv_taskbar_init(tzsh_srv))
+     {
+        ERR("e_tizen_ws_shell_srv_taskbar_init() failed.");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                  TIZEN_WS_SHELL_ERROR_NOT_SUPPORTED);
+        return;
+     }
 }
 
 static void
diff --git a/src/bin/server/e_tizen_ws_shell_srv_taskbar.c b/src/bin/server/e_tizen_ws_shell_srv_taskbar.c
new file mode 100644 (file)
index 0000000..911cfc4
--- /dev/null
@@ -0,0 +1,93 @@
+#include "e_tizen_ws_shell_srv_taskbar_intern.h"
+#include "services/e_service_taskbar_intern.h"
+
+#include <tzsh_server.h>
+
+static void
+_tzsh_srv_taskbar_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
+{
+   wl_resource_destroy(resource);
+}
+
+static void
+_tzsh_srv_taskbar_cb_place_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t place_type)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+   E_Client *ec;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   ec = tzsh_srv->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   e_service_taskbar_place_type_set(ec, place_type);
+}
+
+static void
+_tzsh_srv_taskbar_cb_size_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t width, uint32_t height)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+   E_Client *ec;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   ec = tzsh_srv->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   e_service_taskbar_size_set(ec, width, height);
+}
+
+static void
+_tzsh_srv_taskbar_cb_auto_placement_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t auto_placement)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+   E_Client *ec;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   ec = tzsh_srv->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   e_service_taskbar_auto_placement_set(ec, auto_placement);
+}
+
+static const struct tws_service_taskbar_interface _tzsh_srv_taskbar_iface =
+{
+   _tzsh_srv_taskbar_cb_destroy,
+   _tzsh_srv_taskbar_cb_place_type_set,
+   _tzsh_srv_taskbar_cb_size_set,
+   _tzsh_srv_taskbar_cb_auto_placement_set,
+};
+
+EINTERN Eina_Bool
+e_tizen_ws_shell_srv_taskbar_init(E_Tizen_Ws_Shell_Srv *tzsh_srv)
+{
+   struct wl_client *client;
+   struct wl_resource *res;
+   uint32_t id;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tzsh_srv, EINA_FALSE);
+
+   client = tzsh_srv->client;
+   id = tzsh_srv->id;
+
+   res = wl_resource_create(client,
+                            &tws_service_taskbar_interface,
+                            1,
+                            id);
+   if (!res)
+     {
+        wl_client_post_no_memory(client);
+        return EINA_FALSE;
+     }
+
+   wl_resource_set_implementation(res, &_tzsh_srv_taskbar_iface, tzsh_srv, NULL);
+
+   return EINA_TRUE;
+}
diff --git a/src/bin/server/e_tizen_ws_shell_srv_taskbar_intern.h b/src/bin/server/e_tizen_ws_shell_srv_taskbar_intern.h
new file mode 100644 (file)
index 0000000..a8b09e7
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef E_TIZEN_WS_SHELL_SRV_TASKBAR_INTERN_H
+#define E_TIZEN_WS_SHELL_SRV_TASKBAR_INTERN_H
+
+#include "e_intern.h"
+#include "e_tizen_ws_shell_manager_intern.h"
+
+EINTERN Eina_Bool e_tizen_ws_shell_srv_taskbar_init(E_Tizen_Ws_Shell_Srv *tzsh_srv);
+
+#endif