From: SooChan Lim Date: Thu, 29 May 2025 11:36:39 +0000 (+0900) Subject: e_tizen_wl_shell: make e_tizen_wl_shell_quickpanel.c file X-Git-Tag: accepted/tizen/unified/20250613.040658~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F99%2F325599%2F1;p=platform%2Fupstream%2Fenlightenment.git e_tizen_wl_shell: make e_tizen_wl_shell_quickpanel.c file Move the quickpanel impelementation to this e_tizen_ws_shell_quickpanel.c file. Change-Id: I14956c6068602ae6d8bd72379e5093f4dc88a7a5 --- diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk index 85d047ac5a..ff7621bc95 100644 --- a/src/bin/Makefile.mk +++ b/src/bin/Makefile.mk @@ -208,6 +208,7 @@ src/bin/server/e_tizen_display_policy.c \ 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_indicator.c \ src/bin/server/e_tizen_clipboard.c \ src/bin/server/e_surface_view.c \ diff --git a/src/bin/meson.build b/src/bin/meson.build index 2592acb194..b1cd19ced5 100644 --- a/src/bin/meson.build +++ b/src/bin/meson.build @@ -212,6 +212,7 @@ e_sources = [ 'server/e_tizen_ws_shell_manager.c', '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_indicator.c', 'server/e_tizen_clipboard.c', 'server/e_surface_view.c', diff --git a/src/bin/server/e_tizen_ws_shell_manager.c b/src/bin/server/e_tizen_ws_shell_manager.c index 966056bb80..60cd327a03 100644 --- a/src/bin/server/e_tizen_ws_shell_manager.c +++ b/src/bin/server/e_tizen_ws_shell_manager.c @@ -18,6 +18,7 @@ #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 @@ -617,85 +618,10 @@ _tzsh_srv_iface_cb_indicator_get(struct wl_client *client, struct wl_resource *r } } -static void -_tzsh_srv_qp_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - wl_resource_destroy(resource); -} - -static void -_tzsh_srv_qp_cb_msg(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t msg) -{ - 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); - -#define EC tzsh_srv->ec - EINA_SAFETY_ON_NULL_RETURN(EC); - - switch (msg) - { - case TWS_SERVICE_QUICKPANEL_MSG_SHOW: - e_service_quickpanel_show(EC); - break; - case TWS_SERVICE_QUICKPANEL_MSG_HIDE: - e_service_quickpanel_hide(EC); - break; - default: - ERR("Unknown message!! msg %d", msg); - break; - } -#undef EC -} - -static void -_tzsh_srv_qp_cb_effect_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type) -{ - 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); - -#define EC tzsh_srv->ec - EINA_SAFETY_ON_NULL_RETURN(EC); - e_service_quickpanel_effect_type_set(EC, type); -#undef EC -} - -static void -_tzsh_srv_qp_cb_scroll_lock_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t lock) -{ - 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); - -#define EC tzsh_srv->ec - EINA_SAFETY_ON_NULL_RETURN(EC); - e_service_quickpanel_scroll_lock_set(EC, lock); -#undef EC -} - -static const struct tws_service_quickpanel_interface _tzsh_srv_qp_iface = -{ - _tzsh_srv_qp_cb_destroy, - _tzsh_srv_qp_cb_msg, - _tzsh_srv_qp_cb_effect_type_set, - _tzsh_srv_qp_cb_scroll_lock_set, -}; - static void _tzsh_srv_iface_cb_quickpanel_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); @@ -703,20 +629,27 @@ _tzsh_srv_iface_cb_quickpanel_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_quickpanel_interface, - wl_resource_get_version(res_tzsh_srv), - id); - if (!res) + if (tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_SYSTEM_DEFAULT && + tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_CONTEXT_MENU && + tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_APPS_MENU) { - wl_client_post_no_memory(client); + ERR("Could not find quickpanel service"); + tizen_ws_shell_send_error(res_tzsh_srv, + TIZEN_WS_SHELL_ERROR_NO_SERVICE); return; } - wl_resource_set_implementation(res, &_tzsh_srv_qp_iface, tzsh_srv, NULL); -} - + tzsh_srv->client = client; + tzsh_srv->id = id; + if (!e_tizen_ws_shell_srv_quickpanel_init(tzsh_srv)) + { + ERR("e_tizen_ws_shell_srv_quickpanel_init() failed."); + tizen_ws_shell_send_error(res_tzsh_srv, + TIZEN_WS_SHELL_ERROR_NOT_SUPPORTED); + return; + } +} static void _tzsh_srv_softkey_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) diff --git a/src/bin/server/e_tizen_ws_shell_srv_quickpanel.c b/src/bin/server/e_tizen_ws_shell_srv_quickpanel.c new file mode 100644 index 0000000000..6e4fa0afcd --- /dev/null +++ b/src/bin/server/e_tizen_ws_shell_srv_quickpanel.c @@ -0,0 +1,103 @@ +#include "e_tizen_ws_shell_srv_quickpanel_intern.h" +#include "services/e_service_quickpanel_intern.h" + +#include + +static void +_tzsh_srv_qp_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + wl_resource_destroy(resource); +} + +static void +_tzsh_srv_qp_cb_msg(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t msg) +{ + 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); + +#define EC tzsh_srv->ec + EINA_SAFETY_ON_NULL_RETURN(EC); + + switch (msg) + { + case TWS_SERVICE_QUICKPANEL_MSG_SHOW: + e_service_quickpanel_show(EC); + break; + case TWS_SERVICE_QUICKPANEL_MSG_HIDE: + e_service_quickpanel_hide(EC); + break; + default: + ERR("Unknown message!! msg %d", msg); + break; + } +#undef EC +} + +static void +_tzsh_srv_qp_cb_effect_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type) +{ + 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); + +#define EC tzsh_srv->ec + EINA_SAFETY_ON_NULL_RETURN(EC); + e_service_quickpanel_effect_type_set(EC, type); +#undef EC +} + +static void +_tzsh_srv_qp_cb_scroll_lock_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t lock) +{ + 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); + +#define EC tzsh_srv->ec + EINA_SAFETY_ON_NULL_RETURN(EC); + e_service_quickpanel_scroll_lock_set(EC, lock); +#undef EC +} + +static const struct tws_service_quickpanel_interface _tzsh_srv_qp_iface = +{ + _tzsh_srv_qp_cb_destroy, + _tzsh_srv_qp_cb_msg, + _tzsh_srv_qp_cb_effect_type_set, + _tzsh_srv_qp_cb_scroll_lock_set, +}; + +EINTERN Eina_Bool +e_tizen_ws_shell_srv_quickpanel_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_quickpanel_interface, + wl_resource_get_version(tzsh_srv->res_tzsh_srv), id); + if (!res) + { + wl_client_post_no_memory(client); + return EINA_FALSE; + } + + wl_resource_set_implementation(res, &_tzsh_srv_qp_iface, tzsh_srv, NULL); + + return EINA_TRUE; +} diff --git a/src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h b/src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h new file mode 100644 index 0000000000..1de0d35817 --- /dev/null +++ b/src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h @@ -0,0 +1,9 @@ +#ifndef E_TIZEN_WS_SHELL_SRV_QUICKPANEL_INTERN_H +#define E_TIZEN_WS_SHELL_SRV_QUICKPANEL_INTERN_H + +#include "e_intern.h" +#include "e_tizen_ws_shell_manager_intern.h" + +EINTERN Eina_Bool e_tizen_ws_shell_srv_quickpanel_init(E_Tizen_Ws_Shell_Srv *tzsh_srv); + +#endif