E_API int E_EVENT_CLIENT_FULLSCREEN = -1;
E_API int E_EVENT_CLIENT_UNFULLSCREEN = -1;
-static Eina_Hash *clients_hash = NULL; // pixmap->client
+static Eina_Hash *clients_hash[2] = {NULL}; // pixmap->client
static int focus_track_frozen = 0;
EINA_LIST_FREE(ec->group, child)
child->leader = NULL;
- eina_hash_del_by_key(clients_hash, &ec->pixmap);
+ eina_hash_del_by_key(clients_hash[e_pixmap_type_get(ec->pixmap)], &ec->pixmap);
e_comp->clients = eina_list_remove(e_comp->clients, ec);
e_comp_object_render_update_del(ec->frame);
if (e_pixmap_free(ec->pixmap))
const Eina_List *l;
E_Client *ec;
- if (!eina_hash_population(clients_hash)) return;
-
+ if ((!eina_hash_population(clients_hash[0])) && (!eina_hash_population(clients_hash[1]))) return;
EINA_LIST_FOREACH(e_comp->clients, l, ec)
EINTERN Eina_Bool
e_client_init(void)
{
- clients_hash = eina_hash_pointer_new(NULL);
+ clients_hash[0] = eina_hash_pointer_new(NULL);
+ clients_hash[1] = eina_hash_pointer_new(NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_POINTER_WARP,
_e_client_cb_pointer_warp, NULL);
E_EVENT_CLIENT_FULLSCREEN = ecore_event_type_new();
E_EVENT_CLIENT_UNFULLSCREEN = ecore_event_type_new();
- return (!!clients_hash);
+ return (!!clients_hash[1]);
}
EINTERN void
e_client_shutdown(void)
{
- E_FREE_FUNC(clients_hash, eina_hash_free);
+ E_FREE_FUNC(clients_hash[0], eina_hash_free);
+ E_FREE_FUNC(clients_hash[1], eina_hash_free);
E_FREE_LIST(handlers, ecore_event_handler_del);
{
E_Client *ec;
- if (eina_hash_find(clients_hash, &cp)) return NULL;
+ if (eina_hash_find(clients_hash[e_pixmap_type_get(cp)], &cp)) return NULL;
ec = E_OBJECT_ALLOC(E_Client, E_CLIENT_TYPE, _e_client_free);
if (!ec) return NULL;
EC_CHANGED(ec);
e_comp->clients = eina_list_append(e_comp->clients, ec);
- eina_hash_add(clients_hash, &ec->pixmap, ec);
+ eina_hash_add(clients_hash[e_pixmap_type_get(cp)], &ec->pixmap, ec);
_e_client_event_simple(ec, E_EVENT_CLIENT_ADD);
e_comp_object_client_add(ec);