#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"
#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 <tzsh_server.h>
}
}
-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);
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 =
--- /dev/null
+#include "e_tizen_ws_shell_srv_kvm_intern.h"
+#include "services/e_service_kvm_intern.h"
+#include "e_comp_wl_intern.h"
+
+#include <tzsh_server.h>
+
+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;
+}