e_tizen_wl_shell: make e_tizen_wl_shell_screensaver_manager.c file 00/325600/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 29 May 2025 12:02:55 +0000 (21:02 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 12 Jun 2025 10:40:32 +0000 (19:40 +0900)
Move the screensaver_manager impelementation to this e_tizen_ws_shell_screensaver_manager.c file.

Change-Id: Ie9bb302c158bfc579f102dd1f5124b8aa730734d

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_screensaver_manager.c [new file with mode: 0644]
src/bin/server/e_tizen_ws_shell_srv_screensaver_manager_intern.h [new file with mode: 0644]

index ff7621bc95b7df236c0a61e76b2a15e22edfb0a1..023b8ea11171ea58e787a6853d12a92318524fa3 100644 (file)
@@ -209,6 +209,7 @@ src/bin/server/e_tizen_ws_shell_manager.c \
 src/bin/server/e_tizen_ws_shell_srv_cbhm.c \
 src/bin/server/e_tizen_ws_shell_srv_indicator.c \
 src/bin/server/e_tizen_ws_shell_srv_quickpanel.c \
+src/bin/server/e_tizen_ws_shell_srv_screensaver_manager.c \
 src/bin/server/e_tizen_indicator.c \
 src/bin/server/e_tizen_clipboard.c \
 src/bin/server/e_surface_view.c \
index b1cd19ced5650b203cf7fe1b5b5a6fab6d67c853..168bc31073db9d8897620dfadc0ce74f06c43123 100644 (file)
@@ -213,6 +213,7 @@ e_sources = [
   'server/e_tizen_ws_shell_srv_cbhm.c',
   'server/e_tizen_ws_shell_srv_indicator.c',
   'server/e_tizen_ws_shell_srv_quickpanel.c',
+  'server/e_tizen_ws_shell_srv_screensaver_manager.c',
   'server/e_tizen_indicator.c',
   'server/e_tizen_clipboard.c',
   'server/e_surface_view.c',
index 60cd327a036d1f80f2ade68a464e953c97323130..eb5eb73c9b127bf7de0c89b33b9f303cd5779936 100644 (file)
@@ -1,7 +1,6 @@
 #include "e_tizen_ws_shell_manager_intern.h"
 #include "services/e_service_quickpanel_intern.h"
 #include "services/e_service_volume_intern.h"
-#include "services/e_service_scrsaver_intern.h"
 #include "services/e_service_launcher_intern.h"
 #include "services/e_service_taskbar_intern.h"
 #include "services/e_service_kvm_intern.h"
 #include "e_pixmap_intern.h"
 #include "e_zone_intern.h"
 #include "e_utils_intern.h"
+#include "e_screensaver_intern.h"
 #include "e_security_intern.h"
 #include "e_privilege_intern.h"
 #include "e_magnifier_intern.h"
-#include "e_screensaver_intern.h"
 #include "e_config_intern.h"
 #include "e_tizen_ws_shell_srv_cbhm_intern.h"
 #include "e_tizen_ws_shell_srv_indicator_intern.h"
 #include "e_tizen_ws_shell_srv_quickpanel_intern.h"
+#include "e_tizen_ws_shell_srv_screensaver_manager_intern.h"
 
 #include <tzsh_server.h>
 
@@ -102,9 +102,6 @@ typedef struct _E_Tzsh_QP_Event
 } E_Tzsh_QP_Event;
 
 static E_Tizen_Ws_Shell_Manager *g_tizen_ws_shell_mgr = NULL;
-
-static struct wl_resource *_scrsaver_mng_res = NULL; // TODO
-
 static Eina_List *handlers = NULL;
 
 static void                     _e_tizen_ws_shell_srv_state_broadcast(E_Tizen_Ws_Shell_Srv *tzsh_srv, Eina_Bool reg);
@@ -864,107 +861,10 @@ _tzsh_srv_iface_cb_scrsaver_get(struct wl_client *client, struct wl_resource *re
    wl_resource_set_implementation(res, &_tzsh_srv_scrsaver_iface, tzsh_srv, NULL);
 }
 
-static void
-_tzsh_srv_scrsaver_mng_cb_resource_destroy(struct wl_resource *resource)
-{
-   if (_scrsaver_mng_res == resource)
-     {
-        _scrsaver_mng_res = NULL;
-        e_screensaver_disable();
-     }
-}
-
-static void
-_tzsh_srv_scrsaver_mng_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   _scrsaver_mng_res = NULL;
-   wl_resource_destroy(resource);
-   e_screensaver_disable();
-}
-
-static void
-_tzsh_srv_scrsaver_mng_cb_enable(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   e_screensaver_enable();
-}
-
-static void
-_tzsh_srv_scrsaver_mng_cb_disable(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   e_screensaver_disable();
-}
-
-static void
-_tzsh_srv_scrsaver_mng_cb_idle_time_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t time)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   double timeout;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   /* convert time to seconds (double) from milliseconds (unsigned int) */
-   timeout = (double)time * 0.001f;
-
-   e_screensaver_timeout_set(timeout);
-}
-
-static void
-_tzsh_srv_scrsaver_mng_cb_state_get(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   uint32_t val = 0;
-   double timeout;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-   switch (type)
-     {
-      case TWS_SERVICE_SCREENSAVER_MANAGER_STATE_TYPE_IDLE_TIMEOUT:
-        /* convert time to milliseconds (unsigned int) from seconds (double) */
-        timeout = e_screensaver_timeout_get();
-        val = (uint32_t)(timeout * 1000);
-        break;
-      default:
-        break;
-     }
-
-   tws_service_screensaver_manager_send_state_get_done(resource, type, val, 0);
-}
-
-static const struct tws_service_screensaver_manager_interface _tzsh_srv_scrsaver_mng_iface =
-{
-   _tzsh_srv_scrsaver_mng_cb_destroy,
-   _tzsh_srv_scrsaver_mng_cb_enable,
-   _tzsh_srv_scrsaver_mng_cb_disable,
-   _tzsh_srv_scrsaver_mng_cb_idle_time_set,
-   _tzsh_srv_scrsaver_mng_cb_state_get
-};
-
 static void
 _tzsh_srv_iface_cb_scrsaver_mng_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);
@@ -972,17 +872,24 @@ _tzsh_srv_iface_cb_scrsaver_mng_get(struct wl_client *client, struct wl_resource
    if (!eina_list_data_find(g_tizen_ws_shell_mgr->tzsh_srvs, tzsh_srv))
      return;
 
-   res = wl_resource_create(client, &tws_service_screensaver_manager_interface, 1, id);
-   if (!res)
+   if (tzsh_srv->role != TZSH_SRV_ROLE_SCREENSAVER_MNG)
      {
-        wl_client_post_no_memory(client);
+        ERR("Could not find screensaver manager service");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                   TIZEN_WS_SHELL_ERROR_NO_SERVICE);
         return;
      }
 
-   _scrsaver_mng_res = res;
+   tzsh_srv->client = client;
+   tzsh_srv->id = id;
 
-   wl_resource_set_implementation(res, &_tzsh_srv_scrsaver_mng_iface, tzsh_srv,
-                                  _tzsh_srv_scrsaver_mng_cb_resource_destroy);
+   if (!e_tizen_ws_shell_srv_screensaver_manager_init(tzsh_srv))
+     {
+        ERR("e_tizen_ws_shell_srv_screensaver_manager_init() failed.");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                  TIZEN_WS_SHELL_ERROR_NOT_SUPPORTED);
+        return;
+     }
 }
 
 static void
@@ -2959,16 +2866,15 @@ err:
 static Eina_Bool
 _e_tizen_ws_shell_cb_scrsaver_on(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
 {
-   if (_scrsaver_mng_res)
-     tws_service_screensaver_manager_send_idle(_scrsaver_mng_res);
+   e_tizen_ws_shell_srv_screensaver_manager_on();
+
    return ECORE_CALLBACK_PASS_ON;
 }
 
 static Eina_Bool
 _e_tizen_ws_shell_cb_scrsaver_off(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
 {
-   if (_scrsaver_mng_res)
-     tws_service_screensaver_manager_send_active(_scrsaver_mng_res);
+   e_tizen_ws_shell_srv_screensaver_manager_off();
 
    return ECORE_CALLBACK_PASS_ON;
 }
diff --git a/src/bin/server/e_tizen_ws_shell_srv_screensaver_manager.c b/src/bin/server/e_tizen_ws_shell_srv_screensaver_manager.c
new file mode 100644 (file)
index 0000000..6c0f756
--- /dev/null
@@ -0,0 +1,144 @@
+#include "e_tizen_ws_shell_srv_screensaver_manager_intern.h"
+#include "services/e_service_scrsaver_intern.h"
+#include "e_screensaver_intern.h"
+
+#include <tzsh_server.h>
+
+static struct wl_resource *_scrsaver_mng_res = NULL;
+
+EINTERN void
+e_tizen_ws_shell_srv_screensaver_manager_on(void)
+{
+   if (_scrsaver_mng_res)
+     tws_service_screensaver_manager_send_idle(_scrsaver_mng_res);
+}
+
+EINTERN void
+e_tizen_ws_shell_srv_screensaver_manager_off(void)
+{
+   if (_scrsaver_mng_res)
+     tws_service_screensaver_manager_send_active(_scrsaver_mng_res);
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_resource_destroy(struct wl_resource *resource)
+{
+   if (_scrsaver_mng_res == resource)
+     {
+        _scrsaver_mng_res = NULL;
+        e_screensaver_disable();
+     }
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
+{
+   _scrsaver_mng_res = NULL;
+   wl_resource_destroy(resource);
+   e_screensaver_disable();
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_enable(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   e_screensaver_enable();
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_disable(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   e_screensaver_disable();
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_idle_time_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t time)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+   double timeout;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   /* convert time to seconds (double) from milliseconds (unsigned int) */
+   timeout = (double)time * 0.001f;
+
+   e_screensaver_timeout_set(timeout);
+}
+
+static void
+_tzsh_srv_scrsaver_mng_cb_state_get(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+   uint32_t val = 0;
+   double timeout;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+   switch (type)
+     {
+      case TWS_SERVICE_SCREENSAVER_MANAGER_STATE_TYPE_IDLE_TIMEOUT:
+        /* convert time to milliseconds (unsigned int) from seconds (double) */
+        timeout = e_screensaver_timeout_get();
+        val = (uint32_t)(timeout * 1000);
+        break;
+      default:
+        break;
+     }
+
+   tws_service_screensaver_manager_send_state_get_done(resource, type, val, 0);
+}
+
+static const struct tws_service_screensaver_manager_interface _tzsh_srv_scrsaver_mng_iface =
+{
+   _tzsh_srv_scrsaver_mng_cb_destroy,
+   _tzsh_srv_scrsaver_mng_cb_enable,
+   _tzsh_srv_scrsaver_mng_cb_disable,
+   _tzsh_srv_scrsaver_mng_cb_idle_time_set,
+   _tzsh_srv_scrsaver_mng_cb_state_get
+};
+
+EINTERN Eina_Bool
+e_tizen_ws_shell_srv_screensaver_manager_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_screensaver_manager_interface, 1, id);
+   if (!res)
+     {
+        wl_client_post_no_memory(client);
+        return EINA_FALSE;
+     }
+
+   _scrsaver_mng_res = res;
+
+   wl_resource_set_implementation(res, &_tzsh_srv_scrsaver_mng_iface, tzsh_srv,
+                                  _tzsh_srv_scrsaver_mng_cb_resource_destroy);
+
+   return EINA_TRUE;
+}
diff --git a/src/bin/server/e_tizen_ws_shell_srv_screensaver_manager_intern.h b/src/bin/server/e_tizen_ws_shell_srv_screensaver_manager_intern.h
new file mode 100644 (file)
index 0000000..70c27d6
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef E_TIZEN_WS_SHELL_SRV_SCREENSAVER_MANAGER_INTERN_H
+#define E_TIZEN_WS_SHELL_SRV_SCREENSAVER_MANAGER_INTERN_H
+
+#include "e_intern.h"
+#include "e_tizen_ws_shell_manager_intern.h"
+
+EINTERN Eina_Bool e_tizen_ws_shell_srv_screensaver_manager_init(E_Tizen_Ws_Shell_Srv *tzsh_srv);
+
+EINTERN void e_tizen_ws_shell_srv_screensaver_manager_on(void);
+EINTERN void e_tizen_ws_shell_srv_screensaver_manager_off(void);
+
+#endif