#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>
} 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);
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);
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
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;
}
--- /dev/null
+#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;
+}