struct wl_listener destroy_listener;
} E_Tizen_Ws_Shell_Region;
-typedef struct _E_Tizen_Ws_Shell_Extension
-{
- char *name;
- E_Tizen_Ws_Shell_Ext_Hook_Cb cb;
-} E_Tizen_Ws_Shell_Extension;
-
struct _E_Tizen_Ws_Shell_Manager
{
struct wl_global *global;
Eina_List *tzsh_clients; /* list of E_Tizen_Ws_Shell_Client */
E_Tizen_Ws_Shell_Srv *srvs[TZSH_SRV_ROLE_MAX]; /* list of registered E_Tizen_Ws_Shell_Srv */
-
- /* tizen_ws_shell_interface ver_2 */
- Eina_List *tzsh_extensions; /* list of E_Tizen_Ws_Shell_Extension */
};
typedef struct _E_Tzsh_QP_Event
E_FREE(tzsh_client);
}
-static E_Tizen_Ws_Shell_Extension*
-_e_tizen_ws_shell_extension_get(const char *name)
-{
- E_Tizen_Ws_Shell_Extension *tzsh_ext;
- Eina_List *l;
-
- EINA_LIST_FOREACH(g_tizen_ws_shell_mgr->tzsh_extensions, l, tzsh_ext)
- {
- if (strcmp(tzsh_ext->name, name)) continue;
-
- return tzsh_ext;
- }
-
- return NULL;
-}
-
// --------------------------------------------------------
// tizen_ws_shell_interface::service
// --------------------------------------------------------
e_client_service_role_set(ec, role); // set service role to e_client
}
-// --------------------------------------------------------
-// tizen_ws_shell common
-// --------------------------------------------------------
-EINTERN Eina_Bool
-e_tizen_ws_shell_extension_add(const char *name, E_Tizen_Ws_Shell_Ext_Hook_Cb cb)
-{
- E_Tizen_Ws_Shell_Extension *tzsh_ext;
-
- if (_e_tizen_ws_shell_extension_get(name))
- {
- ERR("Already exists the %s extension\n", name);
- return EINA_FALSE;
- }
-
- tzsh_ext = E_NEW(E_Tizen_Ws_Shell_Extension, 1);
- EINA_SAFETY_ON_NULL_RETURN_VAL(tzsh_ext, EINA_FALSE);
-
- tzsh_ext->name = strndup(name, 512);
- tzsh_ext->cb = cb;
-
- g_tizen_ws_shell_mgr->tzsh_extensions = eina_list_append(g_tizen_ws_shell_mgr->tzsh_extensions, tzsh_ext);
- ELOGF("TZSH",
- "EXTENSION_ADD | name:%s | cb:%p",
- NULL,
- name, cb);
-
- return EINA_TRUE;
-}
-
-EINTERN void
-e_tizen_ws_shell_extension_del(const char *name)
-{
- E_Tizen_Ws_Shell_Extension *tzsh_ext;
-
- tzsh_ext = _e_tizen_ws_shell_extension_get(name);
- if (!tzsh_ext)
- {
- ERR("Cannot find the %s extension\n", name);
- return;
- }
-
- g_tizen_ws_shell_mgr->tzsh_extensions = eina_list_remove(g_tizen_ws_shell_mgr->tzsh_extensions, tzsh_ext);
- memset(tzsh_ext, 0x0, sizeof(E_Tizen_Ws_Shell_Extension));
- E_FREE(tzsh_ext);
-
- ELOGF("TZSH",
- "EXTENSION_DEL | name:%s",
- NULL,
- name);
-}
-
// --------------------------------------------------------
// tizen_ws_shell_interface::region
// --------------------------------------------------------
static void _tzsh_iface_cb_extension_get(struct wl_client *client, struct wl_resource *res_tzsh, uint32_t id, const char *name)
{
- E_Tizen_Ws_Shell *tzsh;
- E_Tizen_Ws_Shell_Extension *tzsh_ext;
- struct wl_resource *res_ext;
-
- tzsh = wl_resource_get_user_data(res_tzsh);
- if (!tzsh)
- {
- wl_resource_post_error
- (res_tzsh,
- WL_DISPLAY_ERROR_INVALID_OBJECT,
- "Invalid res_tzsh's user data");
- return;
- }
-
- tzsh_ext = _e_tizen_ws_shell_extension_get(name);
- if (!tzsh_ext)
- {
- ERR("Could not find tzsh_extension(%s)", name);
- wl_resource_post_error
- (res_tzsh,
- WL_DISPLAY_ERROR_INVALID_OBJECT,
- "unregistered ext:%s", name);
- }
- else
- {
- res_ext = tzsh_ext->cb(client, res_tzsh, id);
- if (!res_ext)
- {
- ERR("Could not create extension(%s) resource", name);
- wl_resource_post_error
- (res_tzsh,
- WL_DISPLAY_ERROR_INVALID_OBJECT,
- "Unknown error:%s", name);
- }
- }
+ // This request is deprecated.
+ wl_client_post_implementation_error(client, "Error Not Supported");
}
// --------------------------------------------------------
{
E_Tizen_Ws_Shell *tzsh;
E_Tizen_Ws_Shell_Srv *tzsh_srv;
- E_Tizen_Ws_Shell_Extension *tzsh_extension;
int i;
if (!g_tizen_ws_shell_mgr) return;
EINA_LIST_FREE(g_tizen_ws_shell_mgr->tzshs, tzsh)
wl_resource_destroy(tzsh->res_tzsh);
- EINA_LIST_FREE(g_tizen_ws_shell_mgr->tzsh_extensions, tzsh_extension)
- {
- free(tzsh_extension->name);
- }
-
wl_global_destroy(g_tizen_ws_shell_mgr->global);
E_FREE(g_tizen_ws_shell_mgr);