src/bin/server/e_tizen_launch_appinfo.c \
src/bin/server/e_tizen_display_policy.c \
src/bin/server/e_tizen_ws_shell_manager.c \
+src/bin/server/e_tizen_indicator.c \
src/bin/server/e_surface_view.c \
src/bin/windowmgr/services/e_service_gesture.c \
src/bin/windowmgr/services/e_service_lockscreen.c \
Eina_Bool is_background;
} E_Policy_Wl_Surface;
-typedef struct _E_Policy_Wl_Tz_Indicator
-{
- struct wl_resource *res_tz_indicator;
- Eina_List *ec_list;
-} E_Policy_Wl_Tz_Indicator;
-
typedef struct _E_Policy_Wl_Tz_Clipboard
{
struct wl_resource *res_tz_clipboard;
Eina_List *pending_vis; /* list of clients that have pending visibility change*/
- Eina_List *tz_indicators;
Eina_List *tz_clipboards; /* list of E_Policy_Wl_Tz_Clipboard */
} E_Policy_Wl;
[E_POLICY_WL_HOOK_BASE_OUTPUT_RESOLUTION_GET] = NULL,
};
-EINTERN int E_EVENT_POLICY_INDICATOR_STATE_CHANGE = -1;
-EINTERN int E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE = -1;
-EINTERN int E_EVENT_POLICY_INDICATOR_VISIBLE_STATE_CHANGE = -1;
-
enum _E_Policy_Hint_Type
{
E_POLICY_HINT_USER_GEOMETRY = 0,
return ret;
}
-// --------------------------------------------------------
-// E_Policy_Wl_Tz_Indicator
-// --------------------------------------------------------
-static E_Policy_Wl_Tz_Indicator *
-_e_policy_wl_tz_indicator_add(struct wl_resource *res_tz_indicator)
-{
- E_Policy_Wl_Tz_Indicator *tz_indicator;
-
- tz_indicator = E_NEW(E_Policy_Wl_Tz_Indicator, 1);
- EINA_SAFETY_ON_NULL_RETURN_VAL(tz_indicator, NULL);
-
- tz_indicator->res_tz_indicator = res_tz_indicator;
-
- polwl->tz_indicators = eina_list_append(polwl->tz_indicators, tz_indicator);
-
- return tz_indicator;
-}
-
-static void
-_e_policy_wl_tz_indicator_del(E_Policy_Wl_Tz_Indicator *tz_indicator)
-{
- EINA_SAFETY_ON_NULL_RETURN(tz_indicator);
-
- polwl->tz_indicators = eina_list_remove(polwl->tz_indicators, tz_indicator);
- E_FREE(tz_indicator);
-}
-
-static E_Policy_Wl_Tz_Indicator *
-_e_policy_wl_tz_indicator_get(struct wl_resource *res_tz_indicator)
-{
- Eina_List *l;
- E_Policy_Wl_Tz_Indicator *tz_indicator;
-
- EINA_LIST_FOREACH(polwl->tz_indicators, l, tz_indicator)
- {
- if (tz_indicator->res_tz_indicator == res_tz_indicator)
- return tz_indicator;
- }
- return NULL;
-}
-
-static E_Policy_Wl_Tz_Indicator *
-_e_policy_wl_tz_indicator_get_from_client(E_Client *ec)
-{
- Eina_List *l;
- E_Policy_Wl_Tz_Indicator *tz_indicator;
-
- EINA_LIST_FOREACH(polwl->tz_indicators, l, tz_indicator)
- {
- if (eina_list_data_find(tz_indicator->ec_list, ec))
- return tz_indicator;
- }
-
- return NULL;
-}
-
-static Eina_Bool
-_e_policy_wl_tz_indicator_set_client(struct wl_resource *res_tz_indicator, E_Client *ec)
-{
- E_Policy_Wl_Tz_Indicator *tz_indicator = NULL;
-
- tz_indicator = _e_policy_wl_tz_indicator_get(res_tz_indicator);
- EINA_SAFETY_ON_NULL_RETURN_VAL(tz_indicator, EINA_FALSE);
-
- if (!eina_list_data_find(tz_indicator->ec_list, ec))
- tz_indicator->ec_list = eina_list_append(tz_indicator->ec_list, ec);
-
- return EINA_TRUE;
-}
-
-static void
-_e_policy_wl_tz_indicator_unset_client(E_Client *ec)
-{
- Eina_List *l;
- E_Policy_Wl_Tz_Indicator *tz_indicator;
-
- EINA_SAFETY_ON_NULL_RETURN(ec);
-
- EINA_LIST_FOREACH(polwl->tz_indicators, l, tz_indicator)
- {
- if (eina_list_data_find(tz_indicator->ec_list, ec))
- tz_indicator->ec_list = eina_list_remove(tz_indicator->ec_list, ec);
- }
-}
-
-static void
-_tz_indicator_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tz_indicator)
-{
- wl_resource_destroy(res_tz_indicator);
-}
-
-static void
-_tz_indicator_cb_state_set(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tz_indicator, struct wl_resource *surf, int32_t state)
-{
- E_Client *ec;
- E_Indicator_State ind_state;
-
- ec = e_client_from_surface_resource(surf);
- EINA_SAFETY_ON_NULL_RETURN(ec);
- EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
-
- if (state == TIZEN_INDICATOR_STATE_ON)
- ind_state = E_INDICATOR_STATE_ON;
- else if (state == TIZEN_INDICATOR_STATE_OFF)
- ind_state = E_INDICATOR_STATE_OFF;
- else
- ind_state = E_INDICATOR_STATE_UNKNOWN;
-
- ELOGF("TZ_IND", "TZ_STATE:%d, E_STATE:%d", ec, state, ind_state);
- _e_policy_wl_tz_indicator_set_client(res_tz_indicator, ec);
- ec->indicator.state = ind_state;
-
- e_policy_event_simple(ec, E_EVENT_POLICY_INDICATOR_STATE_CHANGE);
-}
-
-static void
-_tz_indicator_cb_opacity_mode_set(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tz_indicator, struct wl_resource *surf, int32_t mode)
-{
- E_Client *ec;
- E_Indicator_Opacity_Mode op_mode;
-
- ec = e_client_from_surface_resource(surf);
- EINA_SAFETY_ON_NULL_RETURN(ec);
- EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
-
- switch (mode)
- {
- case TIZEN_INDICATOR_OPACITY_MODE_OPAQUE:
- op_mode = E_INDICATOR_OPACITY_MODE_OPAQUE;
- break;
-
- case TIZEN_INDICATOR_OPACITY_MODE_TRANSLUCENT:
- op_mode = E_INDICATOR_OPACITY_MODE_TRANSLUCENT;
- break;
-
- case TIZEN_INDICATOR_OPACITY_MODE_TRANSPARENT:
- op_mode = E_INDICATOR_OPACITY_MODE_TRANSPARENT;
- break;
-
- case TIZEN_INDICATOR_OPACITY_MODE_BG_TRANSPARENT:
- op_mode = E_INDICATOR_OPACITY_MODE_BG_TRANSPARENT;
- break;
-
- default:
- op_mode = E_INDICATOR_OPACITY_MODE_OPAQUE;
- break;
- }
-
- ELOGF("TZ_IND", "TZ_OP_MODE:%d, E_OP_MODE:%d", ec, mode, op_mode);
- _e_policy_wl_tz_indicator_set_client(res_tz_indicator, ec);
-
- if (ec->indicator.opacity_mode == op_mode) return;
-
- ec->indicator.opacity_mode = op_mode;
- e_tizen_ws_shell_indicator_srv_property_change_send(ec, ec->e.state.rot.ang.curr);
-
- e_policy_event_simple(ec, E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE);
-}
-
-static void
-_tz_indicator_cb_visible_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tz_indicator, struct wl_resource *surf, int32_t vtype)
-{
- E_Client *ec;
- E_Indicator_Visible_Type vis_type;
-
- ec = e_client_from_surface_resource(surf);
- EINA_SAFETY_ON_NULL_RETURN(ec);
- EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
-
- if (vtype == TIZEN_INDICATOR_VISIBLE_TYPE_SHOWN)
- vis_type = E_INDICATOR_VISIBLE_TYPE_SHOWN;
- else
- vis_type = E_INDICATOR_VISIBLE_TYPE_HIDDEN;
-
- ELOGF("TZ_IND", "TZ_VIS_TYPE:%d, E_VIS_TYPE:%d", ec, vtype, vis_type);
- _e_policy_wl_tz_indicator_set_client(res_tz_indicator, ec);
- ec->indicator.visible_type = vis_type;
-
- e_policy_event_simple(ec, E_EVENT_POLICY_INDICATOR_VISIBLE_STATE_CHANGE);
-}
-
-// --------------------------------------------------------
-// tizen_indicator_interface
-// --------------------------------------------------------
-static const struct tizen_indicator_interface _tz_indicator_iface =
-{
- _tz_indicator_cb_destroy,
- _tz_indicator_cb_state_set,
- _tz_indicator_cb_opacity_mode_set,
- _tz_indicator_cb_visible_type_set,
-};
-
-static void
-_tz_indicator_cb_unbind(struct wl_resource *res_tz_indicator)
-{
- E_Policy_Wl_Tz_Indicator *tz_indicator;
-
- tz_indicator = _e_policy_wl_tz_indicator_get(res_tz_indicator);
- EINA_SAFETY_ON_NULL_RETURN(tz_indicator);
-
- _e_policy_wl_tz_indicator_del(tz_indicator);
-}
-
-static void
-_tz_indicator_cb_bind(struct wl_client *client, void *data EINA_UNUSED, uint32_t ver, uint32_t id)
-{
- E_Policy_Wl_Tz_Indicator *tz_indicator_pol;
- struct wl_resource *res_tz_indicator;
-
- EINA_SAFETY_ON_NULL_GOTO(polwl, err);
-
- res_tz_indicator = wl_resource_create(client,
- &tizen_indicator_interface,
- ver,
- id);
- EINA_SAFETY_ON_NULL_GOTO(res_tz_indicator, err);
-
- tz_indicator_pol = _e_policy_wl_tz_indicator_add(res_tz_indicator);
- EINA_SAFETY_ON_NULL_GOTO(tz_indicator_pol, err);
-
- wl_resource_set_implementation(res_tz_indicator,
- &_tz_indicator_iface,
- NULL,
- _tz_indicator_cb_unbind);
- return;
-
-err:
- ERR("Could not create tizen_indicator_interface res: %m");
- wl_client_post_no_memory(client);
-}
-
-EINTERN void
-e_policy_wl_indicator_flick_send(E_Client *ec)
-{
- E_Comp_Wl_Client_Data *cdata;
- E_Policy_Wl_Tz_Indicator *tz_indicator;
- struct wl_resource *surf;
-
- tz_indicator = _e_policy_wl_tz_indicator_get_from_client(ec);
- EINA_SAFETY_ON_NULL_RETURN(tz_indicator);
-
- cdata = e_client_cdata_get(ec);
- if (cdata)
- surf = cdata->surface;
- else
- surf = NULL;
-
- ELOGF("TZ_IND", "SEND FLICK EVENT", ec);
- tizen_indicator_send_flick(tz_indicator->res_tz_indicator, surf, 0);
-}
-
-
// --------------------------------------------------------
// E_Policy_Wl_Tz_Clipboard
// --------------------------------------------------------
if (!ec->pixmap) return;
e_policy_wl_pixmap_del(ec->pixmap);
- _e_policy_wl_tz_indicator_unset_client(ec);
+
_e_policy_wl_tz_clipboard_unset_client(ec);
polwl->pending_vis = eina_list_remove(polwl->pending_vis, ec);
EINA_SAFETY_ON_NULL_GOTO(global, err);
polwl->globals = eina_list_append(polwl->globals, global);
- global = wl_global_create(comp_wl->wl.disp,
- &tizen_indicator_interface,
- 1,
- NULL,
- _tz_indicator_cb_bind);
- EINA_SAFETY_ON_NULL_GOTO(global, err);
- polwl->globals = eina_list_append(polwl->globals, global);
-
global = wl_global_create(comp_wl->wl.disp,
&tizen_clipboard_interface,
2,
E_LIST_HOOK_APPEND(polwl_hooks_ec, E_CLIENT_HOOK_RESIZE_END, _e_policy_wl_client_cb_resize_end, NULL);
E_LIST_HOOK_APPEND(polwl_hooks_ec, E_CLIENT_HOOK_MOVE_END, _e_policy_wl_client_cb_move_end, NULL);
- E_EVENT_POLICY_INDICATOR_STATE_CHANGE = ecore_event_type_new();
- E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE = ecore_event_type_new();
- E_EVENT_POLICY_INDICATOR_VISIBLE_STATE_CHANGE = ecore_event_type_new();
-
e_service_softkey_client_remove_handler_add();
e_tizen_display_policy_init(comp_wl->wl.disp);
EINTERN void
e_policy_wl_shutdown(void)
{
- E_Policy_Wl_Tz_Indicator *tz_indicator;
struct wl_global *global;
e_policy_display_shutdown();
polwl->pending_vis = eina_list_free(polwl->pending_vis);
- EINA_LIST_FREE(polwl->tz_indicators, tz_indicator)
- {
- eina_list_free(tz_indicator->ec_list);
- wl_resource_destroy(tz_indicator->res_tz_indicator);
- }
-
EINA_LIST_FREE(polwl->globals, global)
wl_global_destroy(global);
EINTERN void e_policy_wl_aux_hint_init(void);
EINTERN void e_policy_wl_aux_message_send(E_Client *ec, const char *key, const char *val, Eina_List *options);
EINTERN void e_policy_wl_aux_hint_apply(E_Client *ec);
-EINTERN void e_policy_wl_indicator_flick_send(E_Client *ec);
EINTERN void e_policy_wl_clipboard_data_selected_send(E_Client *ec);
EINTERN void e_policy_wl_stack_changed_send(E_Client *ec);
EINTERN void e_policy_wl_generate_request(E_Client *ec, E_Policy_Wl_Gen_Request type);
#include "e_tizen_launch_effect_intern.h"
#include "e_tizen_launch_appinfo_intern.h"
#include "e_tizen_ws_shell_manager_intern.h"
+#include "e_tizen_indicator_intern.h"
typedef struct _E_Server E_Server;
E_Tizen_Launch_Effect *tizen_launch_effect;
E_Tizen_Launch_Appinfo *tizen_launch_appinfo;
E_Tizen_Ws_Shell_Manager *tizen_ws_shell_manager;
+ E_Tizen_Indicator *tizen_indicator;
} handles; // feature handles
};
e_server_feature_register(E_SERVER_FEATURE_TIZEN_LAUNCH_EFFECT, e_tizen_launch_effect_init(comp_wl->wl.disp));
e_server_feature_register(E_SERVER_FEATURE_TIZEN_LAUNCH_APPINFO, e_tizen_launch_appinfo_init(comp_wl->wl.disp));
e_server_feature_register(E_SERVER_FEATURE_TIZEN_WS_SHELL_MANAGER, e_tizen_ws_shell_manager_init(comp_wl->wl.disp));
+ e_server_feature_register(E_SERVER_FEATURE_TIZEN_INDICATOR, e_tizen_indicator_init(comp_wl->wl.disp));
return EINA_TRUE;
}
EINTERN void
e_server_shutdown(void)
{
+ e_tizen_indicator_shutdown();
e_tizen_ws_shell_shutdown();
e_tizen_launch_appinfo_shutdown();
e_tizen_launch_effect_shutdown();
case E_SERVER_FEATURE_TIZEN_WS_SHELL_MANAGER:
g_server->handles.tizen_ws_shell_manager = handle;
break;
+ case E_SERVER_FEATURE_TIZEN_INDICATOR:
+ g_server->handles.tizen_indicator = handle;
+ break;
default:
ERR("Unknown feature(%d) and handle(%p)", feature, handle);
break;
case E_SERVER_FEATURE_TIZEN_WS_SHELL_MANAGER:
handle = g_server->handles.tizen_ws_shell_manager;
break;
+ case E_SERVER_FEATURE_TIZEN_INDICATOR:
+ handle = g_server->handles.tizen_indicator;
+ break;
default:
ERR("Unknown feature(%d)", feature);
break;
E_SERVER_FEATURE_TIZEN_LAUNCH_EFFECT,
E_SERVER_FEATURE_TIZEN_LAUNCH_APPINFO,
E_SERVER_FEATURE_TIZEN_WS_SHELL_MANAGER,
+ E_SERVER_FEATURE_TIZEN_INDICATOR,
E_SERVER_FEATURE_MAX
} E_SERVER_FEATURE;
--- /dev/null
+#include "e_tizen_indicator_intern.h"
+#include "e_client_intern.h"
+#include "e_policy_intern.h"
+#include "e_tizen_ws_shell_manager_intern.h"
+
+#include <tizen-extension-server-protocol.h>
+
+typedef struct _E_Tizen_Indicator_Client
+{
+ struct wl_resource *indicator_res;
+ Eina_List *ec_list;
+} E_Tizen_Indicator_Client;
+
+struct _E_Tizen_Indicator
+{
+ struct wl_global *global;
+
+ Eina_List *indicator_clients;
+};
+
+static E_Tizen_Indicator *g_tizen_indicator = NULL;
+
+static Eina_List *hooks_ec = NULL;
+
+static E_Tizen_Indicator_Client *
+_e_tizen_indicator_client_add(struct wl_resource *indicator_res)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+
+ indicator_client = E_NEW(E_Tizen_Indicator_Client, 1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(indicator_client, NULL);
+
+ indicator_client->indicator_res = indicator_res;
+
+ g_tizen_indicator->indicator_clients = eina_list_append(g_tizen_indicator->indicator_clients, indicator_client);
+
+ return indicator_client;
+}
+
+static void
+_e_tizen_indicator_client_del(E_Tizen_Indicator_Client *indicator_client)
+{
+ EINA_SAFETY_ON_NULL_RETURN(indicator_client);
+
+ E_FREE(indicator_client);
+}
+
+static E_Tizen_Indicator_Client *
+_e_tizen_indicator_client_get(struct wl_resource *indicator_res)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(g_tizen_indicator->indicator_clients, l, indicator_client)
+ {
+ if (indicator_client->indicator_res == indicator_res)
+ return indicator_client;
+ }
+ return NULL;
+}
+
+static E_Tizen_Indicator_Client *
+_e_tizen_indicator_client_get_from_e_client(E_Client *ec)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(g_tizen_indicator->indicator_clients, l, indicator_client)
+ {
+ if (eina_list_data_find(indicator_client->ec_list, ec))
+ return indicator_client;
+ }
+
+ return NULL;
+}
+
+static Eina_Bool
+_e_tizen_indicator_client_set_e_client(struct wl_resource *res_tz_indicator, E_Client *ec)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+
+ indicator_client = _e_tizen_indicator_client_get(res_tz_indicator);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(indicator_client, EINA_FALSE);
+
+ if (!eina_list_data_find(indicator_client->ec_list, ec))
+ indicator_client->ec_list = eina_list_append(indicator_client->ec_list, ec);
+
+ return EINA_TRUE;
+}
+
+static void
+_e_tizen_indicator_client_unset_e_client(E_Client *ec)
+{
+ Eina_List *l;
+ E_Tizen_Indicator_Client *indicator_client;
+
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ EINA_LIST_FOREACH(g_tizen_indicator->indicator_clients, l, indicator_client)
+ {
+ if (eina_list_data_find(indicator_client->ec_list, ec))
+ indicator_client->ec_list = eina_list_remove(indicator_client->ec_list, ec);
+ }
+}
+
+static void
+_indicator_client_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *indicator_res)
+{
+ wl_resource_destroy(indicator_res);
+}
+
+static void
+_indicator_client_cb_state_set(struct wl_client *client EINA_UNUSED, struct wl_resource *indicator_res, struct wl_resource *surf, int32_t state)
+{
+ E_Indicator_State ind_state;
+ E_Client *ec;
+
+ ec = e_client_from_surface_resource(surf);
+
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+ EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
+
+ if (state == TIZEN_INDICATOR_STATE_ON)
+ ind_state = E_INDICATOR_STATE_ON;
+ else if (state == TIZEN_INDICATOR_STATE_OFF)
+ ind_state = E_INDICATOR_STATE_OFF;
+ else
+ ind_state = E_INDICATOR_STATE_UNKNOWN;
+
+ ELOGF("TZ_IND", "TZ_STATE:%d, E_STATE:%d", ec, state, ind_state);
+
+ _e_tizen_indicator_client_set_e_client(indicator_res, ec);
+
+ ec->indicator.state = ind_state;
+}
+
+static void
+_indicator_client_cb_opacity_mode_set(struct wl_client *client EINA_UNUSED, struct wl_resource *indicator_res, struct wl_resource *surf, int32_t mode)
+{
+ E_Indicator_Opacity_Mode op_mode;
+ E_Client *ec;
+
+ ec = e_client_from_surface_resource(surf);
+
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+ EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
+
+ switch (mode)
+ {
+ case TIZEN_INDICATOR_OPACITY_MODE_OPAQUE:
+ op_mode = E_INDICATOR_OPACITY_MODE_OPAQUE;
+ break;
+
+ case TIZEN_INDICATOR_OPACITY_MODE_TRANSLUCENT:
+ op_mode = E_INDICATOR_OPACITY_MODE_TRANSLUCENT;
+ break;
+
+ case TIZEN_INDICATOR_OPACITY_MODE_TRANSPARENT:
+ op_mode = E_INDICATOR_OPACITY_MODE_TRANSPARENT;
+ break;
+
+ case TIZEN_INDICATOR_OPACITY_MODE_BG_TRANSPARENT:
+ op_mode = E_INDICATOR_OPACITY_MODE_BG_TRANSPARENT;
+ break;
+
+ default:
+ op_mode = E_INDICATOR_OPACITY_MODE_OPAQUE;
+ break;
+ }
+
+ ELOGF("TZ_IND", "TZ_OP_MODE:%d, E_OP_MODE:%d", ec, mode, op_mode);
+
+ _e_tizen_indicator_client_set_e_client(indicator_res, ec);
+
+ if (ec->indicator.opacity_mode == op_mode) return;
+
+ ec->indicator.opacity_mode = op_mode;
+ e_tizen_ws_shell_indicator_srv_property_change_send(ec, ec->e.state.rot.ang.curr);
+}
+
+static void
+_indicator_client_cb_visible_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *indicator_res, struct wl_resource *surf, int32_t vtype)
+{
+ E_Indicator_Visible_Type vis_type;
+ E_Client *ec;
+
+ ec = e_client_from_surface_resource(surf);
+
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+ EINA_SAFETY_ON_NULL_RETURN(e_client_view_get(ec));
+
+ if (vtype == TIZEN_INDICATOR_VISIBLE_TYPE_SHOWN)
+ vis_type = E_INDICATOR_VISIBLE_TYPE_SHOWN;
+ else
+ vis_type = E_INDICATOR_VISIBLE_TYPE_HIDDEN;
+
+ ELOGF("TZ_IND", "TZ_VIS_TYPE:%d, E_VIS_TYPE:%d", ec, vtype, vis_type);
+
+ _e_tizen_indicator_client_set_e_client(indicator_res, ec);
+
+ ec->indicator.visible_type = vis_type;
+}
+
+// --------------------------------------------------------
+// tizen_indicator_interface
+// --------------------------------------------------------
+static const struct tizen_indicator_interface _indicator_client_iface =
+{
+ _indicator_client_cb_destroy,
+ _indicator_client_cb_state_set,
+ _indicator_client_cb_opacity_mode_set,
+ _indicator_client_cb_visible_type_set,
+};
+
+static void
+_indicator_client_cb_unbind(struct wl_resource *indicator_res)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+
+ indicator_client = _e_tizen_indicator_client_get(indicator_res);
+ EINA_SAFETY_ON_NULL_RETURN(indicator_client);
+
+ _e_tizen_indicator_client_del(indicator_client);
+}
+
+static void
+_indicator_client_cb_bind(struct wl_client *client, void *data EINA_UNUSED, uint32_t ver, uint32_t id)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+ struct wl_resource *indicator_res;
+
+ indicator_res = wl_resource_create(client,
+ &tizen_indicator_interface,
+ ver,
+ id);
+ EINA_SAFETY_ON_NULL_GOTO(indicator_res, err);
+
+ indicator_client = _e_tizen_indicator_client_add(indicator_res);
+ EINA_SAFETY_ON_NULL_GOTO(indicator_client, err);
+
+ wl_resource_set_implementation(indicator_res,
+ &_indicator_client_iface,
+ NULL,
+ _indicator_client_cb_unbind);
+ return;
+
+err:
+ ERR("Could not create tizen_indicator_interface res: %m");
+ wl_client_post_no_memory(client);
+}
+
+static void
+_e_tizen_indicator_cb_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
+{
+ _e_tizen_indicator_client_unset_e_client(ec);
+}
+
+EINTERN E_Tizen_Indicator *
+e_tizen_indicator_init(struct wl_display *display)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(display, NULL);
+
+ if (g_tizen_indicator) return g_tizen_indicator;
+
+ g_tizen_indicator = E_NEW(E_Tizen_Indicator, 1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(g_tizen_indicator, NULL);
+
+ g_tizen_indicator->global = wl_global_create(display,
+ &tizen_indicator_interface,
+ 1,
+ NULL,
+ _indicator_client_cb_bind);
+
+ if (!g_tizen_indicator->global)
+ {
+ ERR("Failed to create tizen_indicator global");
+ E_FREE(g_tizen_indicator);
+ g_tizen_indicator = NULL;
+
+ return NULL;
+ }
+
+ E_CLIENT_HOOK_APPEND(hooks_ec, E_CLIENT_HOOK_DEL, _e_tizen_indicator_cb_hook_client_del, NULL);
+
+ return g_tizen_indicator;
+}
+
+EINTERN void
+e_tizen_indicator_shutdown(void)
+{
+ E_Tizen_Indicator_Client *indicator_client;
+
+ if (!g_tizen_indicator) return;
+
+ EINA_LIST_FREE(g_tizen_indicator->indicator_clients, indicator_client)
+ {
+ wl_resource_destroy(indicator_client->indicator_res);
+ }
+
+ wl_global_destroy(g_tizen_indicator->global);
+
+ E_FREE(g_tizen_indicator);
+ g_tizen_indicator = NULL;
+}
+
+EINTERN void
+e_tizen_indicator_flick_send(E_Client *ec)
+{
+ E_Comp_Wl_Client_Data *cdata;
+ E_Tizen_Indicator_Client *indicator_client;
+ struct wl_resource *surf;
+
+ indicator_client = _e_tizen_indicator_client_get_from_e_client(ec);
+ EINA_SAFETY_ON_NULL_RETURN(indicator_client);
+
+ cdata = e_client_cdata_get(ec);
+ if (cdata)
+ surf = cdata->surface;
+ else
+ surf = NULL;
+
+ ELOGF("TZ_IND", "SEND FLICK EVENT", ec);
+
+ tizen_indicator_send_flick(indicator_client->indicator_res, surf, 0);
+}
--- /dev/null
+#ifndef E_TIZEN_INDICATOR_INTERN_H
+#define E_TIZEN_INDICATOR_INTERN_H
+
+#include "e_intern.h"
+
+typedef struct _E_Tizen_Indicator E_Tizen_Indicator;
+
+EINTERN E_Tizen_Indicator *e_tizen_indicator_init(struct wl_display *display);
+EINTERN void e_tizen_indicator_shutdown(void);
+
+EINTERN void e_tizen_indicator_flick_send(E_Client *ec);
+
+#endif
\ No newline at end of file
EINTERN extern E_Policy *e_policy;
EINTERN extern E_Policy_System_Info e_policy_system_info;
-EINTERN extern int E_EVENT_POLICY_INDICATOR_STATE_CHANGE;
-EINTERN extern int E_EVENT_POLICY_INDICATOR_OPACITY_MODE_CHANGE;
-EINTERN extern int E_EVENT_POLICY_INDICATOR_VISIBLE_STATE_CHANGE;
-
EINTERN int e_policy_init(void);
EINTERN int e_policy_shutdown(void);
#include "e_layout_intern.h"
#include "e_view_intern.h"
#include "e_view_client_intern.h"
+#include "e_tizen_indicator_intern.h"
#define SMART_NAME "quickpanel_object"
#define INTERNAL_ENTRY \
{
/* cancel touch events sended up to now */
e_comp_wl_touch_cancel();
- e_policy_wl_indicator_flick_send(focused);
+ e_tizen_indicator_flick_send(focused);
return EINA_TRUE;
}
}