From: SooChan Lim Date: Fri, 30 May 2025 06:45:05 +0000 (+0900) Subject: e_tizen_wl_shell: make e_tizen_wl_shell_kvm.c file X-Git-Tag: accepted/tizen/unified/20250613.040658~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F06%2F325606%2F1;p=platform%2Fupstream%2Fenlightenment.git e_tizen_wl_shell: make e_tizen_wl_shell_kvm.c file Move the kvm impelementation to this e_tizen_ws_shell_kvm.c file. Change-Id: I17ff858ab55d6559710885cc3970bb2a9aaa9b73 --- diff --git a/src/bin/Makefile.mk b/src/bin/Makefile.mk index 5e4b62587c..47688a49f4 100644 --- a/src/bin/Makefile.mk +++ b/src/bin/Makefile.mk @@ -215,6 +215,7 @@ 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_ws_shell_srv_kvm.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 3a1116d292..2823084620 100644 --- a/src/bin/meson.build +++ b/src/bin/meson.build @@ -219,6 +219,7 @@ e_sources = [ '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_ws_shell_srv_kvm.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 bab5210ba2..ff1129c029 100644 --- a/src/bin/server/e_tizen_ws_shell_manager.c +++ b/src/bin/server/e_tizen_ws_shell_manager.c @@ -2,10 +2,8 @@ #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_kvm_intern.h" #include "services/e_service_softkey_intern.h" #include "e_comp_intern.h" -#include "e_comp_wl_intern.h" #include "e_pixmap_intern.h" #include "e_zone_intern.h" #include "e_utils_intern.h" @@ -22,6 +20,7 @@ #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 "e_tizen_ws_shell_srv_kvm_intern.h" #include @@ -871,200 +870,10 @@ _tzsh_srv_iface_cb_taskbar_get(struct wl_client *client, struct wl_resource *res } } -static void -_tzsh_srv_kvm_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Service_Kvm *esk; - E_Client *ec; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_GOTO(tzsh_srv, res_destroy); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_GOTO(ec, res_destroy); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_GOTO(esk, res_destroy); - - e_service_kvm_del(esk); - -res_destroy : - wl_resource_destroy(resource); -} - -static void -_tzsh_srv_kvm_cb_perform_drop(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Comp_Wl_Data *comp_wl; - E_Service_Kvm *esk; - E_Client *ec; - - comp_wl = e_comp_wl_get(); - if (!comp_wl->drag) return; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_drop_perform(esk, E_SERVICE_KVM_DROP_TARGET_KVM_SERVICE); -} - -static void -_tzsh_srv_kvm_cb_cancel_drag(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Comp_Wl_Data *comp_wl; - E_Service_Kvm *esk; - E_Client *ec; - - comp_wl = e_comp_wl_get(); - if (!comp_wl->drag) return; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_drag_cancel(esk); -} - -static void -_tzsh_srv_kvm_cb_perform_drag_enter(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Comp_Wl_Data *comp_wl; - E_Service_Kvm *esk; - E_Client *ec; - - comp_wl = e_comp_wl_get(); - if (!comp_wl->drag) return; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_perform_drag_enter(esk); -} - -static void -_tzsh_srv_kvm_cb_perform_drag_leave(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Comp_Wl_Data *comp_wl; - E_Service_Kvm *esk; - E_Client *ec; - - comp_wl = e_comp_wl_get(); - if (!comp_wl->drag) return; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_perform_drag_leave(esk); -} - -static void -_tzsh_srv_kvm_cb_secondary_selection_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Service_Kvm *esk; - E_Client *ec; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_secondary_selection_set(esk, EINA_TRUE); -} - -static void -_tzsh_srv_kvm_cb_secondary_selection_unset(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Service_Kvm *esk; - E_Client *ec; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_secondary_selection_set(esk, EINA_FALSE); -} - -static void -_tzsh_srv_kvm_cb_perform_drop_target(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t drop_target) -{ - E_Tizen_Ws_Shell_Srv *tzsh_srv; - E_Comp_Wl_Data *comp_wl; - E_Service_Kvm *esk; - E_Client *ec; - - comp_wl = e_comp_wl_get(); - if (!comp_wl->drag) return; - - tzsh_srv = wl_resource_get_user_data(resource); - EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); - - ec = tzsh_srv->ec; - EINA_SAFETY_ON_NULL_RETURN(ec); - - esk = e_service_kvm_service_get(ec); - EINA_SAFETY_ON_NULL_RETURN(esk); - - e_service_kvm_drop_perform(esk, drop_target); -} - -static const struct tws_service_kvm_interface _tzsh_srv_kvm_iface = -{ - _tzsh_srv_kvm_cb_destroy, - _tzsh_srv_kvm_cb_perform_drop, - _tzsh_srv_kvm_cb_cancel_drag, - _tzsh_srv_kvm_cb_perform_drag_enter, - _tzsh_srv_kvm_cb_perform_drag_leave, - _tzsh_srv_kvm_cb_secondary_selection_set, - _tzsh_srv_kvm_cb_secondary_selection_unset, - _tzsh_srv_kvm_cb_perform_drop_target, -}; - static void _tzsh_srv_iface_cb_kvm_get(struct wl_client *client, struct wl_resource *res_tzsh_srv, uint32_t id) { - E_Service_Kvm *esk = NULL; E_Tizen_Ws_Shell_Srv *tzsh_srv; - struct wl_resource *res; - E_Client *ec; tzsh_srv = wl_resource_get_user_data(res_tzsh_srv); EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); @@ -1073,29 +882,24 @@ _tzsh_srv_iface_cb_kvm_get(struct wl_client *client, struct wl_resource *res_tzs if (!eina_list_data_find(g_tizen_ws_shell_mgr->tzsh_srvs, tzsh_srv)) return; - res = wl_resource_create(client, - &tws_service_kvm_interface, - 2, - id); - if (!res) + if (tzsh_srv->role != TZSH_SRV_ROLE_KVM) { - wl_client_post_no_memory(client); + ERR("Could not find kvm service"); + tizen_ws_shell_send_error(res_tzsh_srv, + TIZEN_WS_SHELL_ERROR_NO_SERVICE); return; } - ELOGF("KVM", "multi control resource created, res:%p, tzsh_srv:%p, res_tzsh_srv:%p", NULL, res, tzsh_srv, res_tzsh_srv); - - ec = tzsh_srv->ec; - if (ec) - esk = e_service_kvm_service_get(ec); + tzsh_srv->client = client; + tzsh_srv->id = id; - if (esk) + if (!e_tizen_ws_shell_srv_kvm_init(tzsh_srv)) { - ELOGF("KVM", "multi control resource set. res:%p, service:%p, ec:%p", NULL, res, esk, ec); - e_service_kvm_wl_resource_set(esk, res); + ERR("e_tizen_ws_shell_srv_kvm_init() failed."); + tizen_ws_shell_send_error(res_tzsh_srv, + TIZEN_WS_SHELL_ERROR_NOT_SUPPORTED); + return; } - - wl_resource_set_implementation(res, &_tzsh_srv_kvm_iface, tzsh_srv, NULL); } static const struct tws_service_interface _tzsh_srv_iface = diff --git a/src/bin/server/e_tizen_ws_shell_srv_kvm.c b/src/bin/server/e_tizen_ws_shell_srv_kvm.c new file mode 100644 index 0000000000..11e1d21138 --- /dev/null +++ b/src/bin/server/e_tizen_ws_shell_srv_kvm.c @@ -0,0 +1,235 @@ +#include "e_tizen_ws_shell_srv_kvm_intern.h" +#include "services/e_service_kvm_intern.h" +#include "e_comp_wl_intern.h" + +#include + +static void +_tzsh_srv_kvm_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Service_Kvm *esk; + E_Client *ec; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_GOTO(tzsh_srv, res_destroy); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_GOTO(ec, res_destroy); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_GOTO(esk, res_destroy); + + e_service_kvm_del(esk); + +res_destroy : + wl_resource_destroy(resource); +} + +static void +_tzsh_srv_kvm_cb_perform_drop(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Comp_Wl_Data *comp_wl; + E_Service_Kvm *esk; + E_Client *ec; + + comp_wl = e_comp_wl_get(); + if (!comp_wl->drag) return; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_drop_perform(esk, E_SERVICE_KVM_DROP_TARGET_KVM_SERVICE); +} + +static void +_tzsh_srv_kvm_cb_cancel_drag(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Comp_Wl_Data *comp_wl; + E_Service_Kvm *esk; + E_Client *ec; + + comp_wl = e_comp_wl_get(); + if (!comp_wl->drag) return; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_drag_cancel(esk); +} + +static void +_tzsh_srv_kvm_cb_perform_drag_enter(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Comp_Wl_Data *comp_wl; + E_Service_Kvm *esk; + E_Client *ec; + + comp_wl = e_comp_wl_get(); + if (!comp_wl->drag) return; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_perform_drag_enter(esk); +} + +static void +_tzsh_srv_kvm_cb_perform_drag_leave(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Comp_Wl_Data *comp_wl; + E_Service_Kvm *esk; + E_Client *ec; + + comp_wl = e_comp_wl_get(); + if (!comp_wl->drag) return; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_perform_drag_leave(esk); +} + +static void +_tzsh_srv_kvm_cb_secondary_selection_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Service_Kvm *esk; + E_Client *ec; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_secondary_selection_set(esk, EINA_TRUE); +} + +static void +_tzsh_srv_kvm_cb_secondary_selection_unset(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Service_Kvm *esk; + E_Client *ec; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_secondary_selection_set(esk, EINA_FALSE); +} + +static void +_tzsh_srv_kvm_cb_perform_drop_target(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t drop_target) +{ + E_Tizen_Ws_Shell_Srv *tzsh_srv; + E_Comp_Wl_Data *comp_wl; + E_Service_Kvm *esk; + E_Client *ec; + + comp_wl = e_comp_wl_get(); + if (!comp_wl->drag) return; + + tzsh_srv = wl_resource_get_user_data(resource); + EINA_SAFETY_ON_NULL_RETURN(tzsh_srv); + + ec = tzsh_srv->ec; + EINA_SAFETY_ON_NULL_RETURN(ec); + + esk = e_service_kvm_service_get(ec); + EINA_SAFETY_ON_NULL_RETURN(esk); + + e_service_kvm_drop_perform(esk, drop_target); +} + +static const struct tws_service_kvm_interface _tzsh_srv_kvm_iface = +{ + _tzsh_srv_kvm_cb_destroy, + _tzsh_srv_kvm_cb_perform_drop, + _tzsh_srv_kvm_cb_cancel_drag, + _tzsh_srv_kvm_cb_perform_drag_enter, + _tzsh_srv_kvm_cb_perform_drag_leave, + _tzsh_srv_kvm_cb_secondary_selection_set, + _tzsh_srv_kvm_cb_secondary_selection_unset, + _tzsh_srv_kvm_cb_perform_drop_target, +}; + +EINTERN Eina_Bool +e_tizen_ws_shell_srv_kvm_init(E_Tizen_Ws_Shell_Srv *tzsh_srv) +{ + struct wl_client *client; + struct wl_resource *res; + uint32_t id; + E_Service_Kvm *esk = NULL; + E_Client *ec; + + 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_kvm_interface, + 2, + id); + if (!res) + { + wl_client_post_no_memory(client); + return EINA_FALSE; + } + + ELOGF("KVM", "multi control resource created, res:%p, tzsh_srv:%p", NULL, + res, tzsh_srv); + + ec = tzsh_srv->ec; + if (ec) + esk = e_service_kvm_service_get(ec); + + if (esk) + { + ELOGF("KVM", "multi control resource set. res:%p, service:%p, ec:%p", NULL, + res, esk, ec); + e_service_kvm_wl_resource_set(esk, res); + } + + wl_resource_set_implementation(res, &_tzsh_srv_kvm_iface, tzsh_srv, NULL); + + return EINA_TRUE; +} diff --git a/src/bin/server/e_tizen_ws_shell_srv_kvm_intern.h b/src/bin/server/e_tizen_ws_shell_srv_kvm_intern.h new file mode 100644 index 0000000000..5a29fa25cf --- /dev/null +++ b/src/bin/server/e_tizen_ws_shell_srv_kvm_intern.h @@ -0,0 +1,9 @@ +#ifndef E_TIZEN_WS_SHELL_SRV_KVM_INTERN_H +#define E_TIZEN_WS_SHELL_SRV_KVM_INTERN_H + +#include "e_intern.h" +#include "e_tizen_ws_shell_manager_intern.h" + +EINTERN Eina_Bool e_tizen_ws_shell_srv_kvm_init(E_Tizen_Ws_Shell_Srv *tzsh_srv); + +#endif