Remove ecore_hash and eina_hash use from ecore.
SVN revision: 38105
This commit is contained in:
parent
db11d16b7f
commit
642d8686de
|
@ -24,6 +24,10 @@
|
||||||
|
|
||||||
static Ecore_List *loaded_plugins = NULL;
|
static Ecore_List *loaded_plugins = NULL;
|
||||||
|
|
||||||
|
static Eina_Bool _hash_keys(const Eina_Hash *hash,
|
||||||
|
const char *key,
|
||||||
|
void *list);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Ecore_Plugin Plugin Functions
|
* @defgroup Ecore_Plugin Plugin Functions
|
||||||
*
|
*
|
||||||
|
@ -163,7 +167,8 @@ EAPI Ecore_List *
|
||||||
ecore_plugin_available_get(Ecore_Path_Group *group)
|
ecore_plugin_available_get(Ecore_Path_Group *group)
|
||||||
{
|
{
|
||||||
Ecore_List *avail = NULL;
|
Ecore_List *avail = NULL;
|
||||||
Ecore_Hash *plugins = NULL;
|
Eina_Hash *plugins = NULL;
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
|
CHECK_PARAM_POINTER_RETURN("group", group, NULL);
|
||||||
|
@ -172,8 +177,7 @@ ecore_plugin_available_get(Ecore_Path_Group *group)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
ecore_list_first_goto(group->paths);
|
ecore_list_first_goto(group->paths);
|
||||||
plugins = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
plugins = eina_hash_string_superfast_new(free);
|
||||||
ecore_hash_free_key_cb_set(plugins, free);
|
|
||||||
|
|
||||||
while ((path = ecore_list_next(group->paths)) != NULL)
|
while ((path = ecore_list_next(group->paths)) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -214,21 +218,37 @@ ecore_plugin_available_get(Ecore_Path_Group *group)
|
||||||
ext = strrchr(ppath, '.');
|
ext = strrchr(ppath, '.');
|
||||||
*ext = '\0';
|
*ext = '\0';
|
||||||
|
|
||||||
if (!ecore_hash_get(plugins, ppath))
|
if (!eina_hash_find(plugins, ppath))
|
||||||
{
|
{
|
||||||
char *key;
|
char *key;
|
||||||
|
|
||||||
key = strdup(ppath);
|
key = strdup(ppath);
|
||||||
ecore_hash_set(plugins, key, key);
|
eina_hash_add(plugins, key, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_hash_free_key_cb_set(plugins, NULL);
|
avail = ecore_list_new();
|
||||||
avail = ecore_hash_keys(plugins);
|
|
||||||
ecore_list_free_cb_set(avail, free);
|
ecore_list_free_cb_set(avail, free);
|
||||||
ecore_hash_destroy(plugins);
|
|
||||||
|
|
||||||
|
it = eina_hash_iterator_key_new(plugins);
|
||||||
|
if (it)
|
||||||
|
{
|
||||||
|
eina_iterator_foreach(it, EINA_EACH(_hash_keys), avail);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
}
|
||||||
|
|
||||||
|
eina_hash_free(plugins);
|
||||||
|
|
||||||
|
|
||||||
return avail;
|
return avail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_keys(const Eina_Hash *hash, const char *key, void *list)
|
||||||
|
{
|
||||||
|
ecore_list_append(list, key);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -188,7 +188,7 @@ extern "C" {
|
||||||
EAPI void *ecore_con_server_del(Ecore_Con_Server *svr);
|
EAPI void *ecore_con_server_del(Ecore_Con_Server *svr);
|
||||||
EAPI void *ecore_con_server_data_get(Ecore_Con_Server *svr);
|
EAPI void *ecore_con_server_data_get(Ecore_Con_Server *svr);
|
||||||
EAPI int ecore_con_server_connected_get(Ecore_Con_Server *svr);
|
EAPI int ecore_con_server_connected_get(Ecore_Con_Server *svr);
|
||||||
EAPI Ecore_List *ecore_con_server_clients_get(Ecore_Con_Server *svr);
|
EAPI Eina_List *ecore_con_server_clients_get(Ecore_Con_Server *svr);
|
||||||
EAPI int ecore_con_server_send(Ecore_Con_Server *svr, const void *data, int size);
|
EAPI int ecore_con_server_send(Ecore_Con_Server *svr, const void *data, int size);
|
||||||
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients);
|
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server *svr, int client_limit, char reject_excess_clients);
|
||||||
EAPI char *ecore_con_server_ip_get(Ecore_Con_Server *svr);
|
EAPI char *ecore_con_server_ip_get(Ecore_Con_Server *svr);
|
||||||
|
|
|
@ -178,7 +178,7 @@ ecore_con_server_add(Ecore_Con_Type compl_type, const char *name, int port,
|
||||||
svr->created = 1;
|
svr->created = 1;
|
||||||
svr->reject_excess_clients = 0;
|
svr->reject_excess_clients = 0;
|
||||||
svr->client_limit = -1;
|
svr->client_limit = -1;
|
||||||
svr->clients = ecore_list_new();
|
svr->clients = NULL;
|
||||||
svr->ppid = getpid();
|
svr->ppid = getpid();
|
||||||
ecore_con_ssl_server_prepare(svr);
|
ecore_con_ssl_server_prepare(svr);
|
||||||
|
|
||||||
|
@ -351,8 +351,8 @@ ecore_con_server_connect(Ecore_Con_Type compl_type, const char *name, int port,
|
||||||
svr->data = (void *)data;
|
svr->data = (void *)data;
|
||||||
svr->created = 0;
|
svr->created = 0;
|
||||||
svr->reject_excess_clients = 0;
|
svr->reject_excess_clients = 0;
|
||||||
|
svr->clients = NULL;
|
||||||
svr->client_limit = -1;
|
svr->client_limit = -1;
|
||||||
svr->clients = ecore_list_new();
|
|
||||||
ecore_con_ssl_server_prepare(svr);
|
ecore_con_ssl_server_prepare(svr);
|
||||||
|
|
||||||
type = compl_type & ECORE_CON_TYPE;
|
type = compl_type & ECORE_CON_TYPE;
|
||||||
|
@ -551,7 +551,7 @@ ecore_con_server_connected_get(Ecore_Con_Server *svr)
|
||||||
* @return The list of clients on this server.
|
* @return The list of clients on this server.
|
||||||
* @ingroup Ecore_Con_Server_Group
|
* @ingroup Ecore_Con_Server_Group
|
||||||
*/
|
*/
|
||||||
EAPI Ecore_List *
|
EAPI Eina_List *
|
||||||
ecore_con_server_clients_get(Ecore_Con_Server *svr)
|
ecore_con_server_clients_get(Ecore_Con_Server *svr)
|
||||||
{
|
{
|
||||||
if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
|
if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_CON_SERVER))
|
||||||
|
@ -782,8 +782,7 @@ ecore_con_client_del(Ecore_Con_Client *cl)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ecore_list_goto(cl->server->clients, cl))
|
cl->server->clients = eina_list_remove(cl->server->clients, cl);
|
||||||
ecore_list_remove(cl->server->clients);
|
|
||||||
_ecore_con_client_free(cl);
|
_ecore_con_client_free(cl);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
|
@ -864,6 +863,7 @@ ecore_con_client_flush(Ecore_Con_Client *cl)
|
||||||
static void
|
static void
|
||||||
_ecore_con_server_free(Ecore_Con_Server *svr)
|
_ecore_con_server_free(Ecore_Con_Server *svr)
|
||||||
{
|
{
|
||||||
|
Ecore_Con_Client *cl;
|
||||||
double t_start, t;
|
double t_start, t;
|
||||||
|
|
||||||
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
|
||||||
|
@ -882,9 +882,12 @@ _ecore_con_server_free(Ecore_Con_Server *svr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (svr->write_buf) free(svr->write_buf);
|
if (svr->write_buf) free(svr->write_buf);
|
||||||
while (!ecore_list_empty_is(svr->clients))
|
while (svr->clients)
|
||||||
_ecore_con_client_free(ecore_list_first_remove(svr->clients));
|
{
|
||||||
ecore_list_destroy(svr->clients);
|
cl = eina_list_data_get(svr->clients);
|
||||||
|
svr->clients = eina_list_remove(svr->clients, cl);
|
||||||
|
_ecore_con_client_free(cl);
|
||||||
|
}
|
||||||
if ((svr->created) && (svr->path) && (svr->ppid == getpid()))
|
if ((svr->created) && (svr->path) && (svr->ppid == getpid()))
|
||||||
unlink(svr->path);
|
unlink(svr->path);
|
||||||
if (svr->fd >= 0) close(svr->fd);
|
if (svr->fd >= 0) close(svr->fd);
|
||||||
|
@ -1181,7 +1184,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
|
||||||
if (svr->delete_me) return 1;
|
if (svr->delete_me) return 1;
|
||||||
if ((svr->client_limit >= 0) && (!svr->reject_excess_clients))
|
if ((svr->client_limit >= 0) && (!svr->reject_excess_clients))
|
||||||
{
|
{
|
||||||
if (ecore_list_count(svr->clients) >= svr->client_limit) return 1;
|
if (eina_list_count(svr->clients) >= svr->client_limit) return 1;
|
||||||
}
|
}
|
||||||
/* a new client */
|
/* a new client */
|
||||||
size_in = sizeof(struct sockaddr_in);
|
size_in = sizeof(struct sockaddr_in);
|
||||||
|
@ -1223,7 +1226,7 @@ _ecore_con_svr_handler(void *data, Ecore_Fd_Handler *fd_handler __UNUSED__)
|
||||||
ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
|
ecore_main_fd_handler_add(cl->fd, ECORE_FD_READ,
|
||||||
_ecore_con_svr_cl_handler, cl, NULL, NULL);
|
_ecore_con_svr_cl_handler, cl, NULL, NULL);
|
||||||
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
||||||
ecore_list_append(svr->clients, cl);
|
eina_list_append(svr->clients, cl);
|
||||||
if (!svr->path)
|
if (!svr->path)
|
||||||
{
|
{
|
||||||
ip = incoming.sin_addr.s_addr;
|
ip = incoming.sin_addr.s_addr;
|
||||||
|
@ -1422,7 +1425,7 @@ _ecore_con_svr_udp_handler(void *data, Ecore_Fd_Handler *fd_handler)
|
||||||
}
|
}
|
||||||
memcpy(cl->data, &client_addr, sizeof(client_addr));
|
memcpy(cl->data, &client_addr, sizeof(client_addr));
|
||||||
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
ECORE_MAGIC_SET(cl, ECORE_MAGIC_CON_CLIENT);
|
||||||
ecore_list_append(svr->clients, cl);
|
eina_list_append(svr->clients, cl);
|
||||||
|
|
||||||
ip = client_addr.sin_addr.s_addr;
|
ip = client_addr.sin_addr.s_addr;
|
||||||
snprintf(ipbuf, sizeof(ipbuf),
|
snprintf(ipbuf, sizeof(ipbuf),
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct _Ecore_Con_Server
|
||||||
char *path;
|
char *path;
|
||||||
void *data;
|
void *data;
|
||||||
Ecore_Fd_Handler *fd_handler;
|
Ecore_Fd_Handler *fd_handler;
|
||||||
Ecore_List *clients;
|
Eina_List *clients;
|
||||||
int write_buf_size;
|
int write_buf_size;
|
||||||
int write_buf_offset;
|
int write_buf_offset;
|
||||||
unsigned char *write_buf;
|
unsigned char *write_buf;
|
||||||
|
|
|
@ -34,7 +34,7 @@ struct _Ecore_Desktop
|
||||||
* space and cycles that just covers up bugs. On the other hand, it makes
|
* space and cycles that just covers up bugs. On the other hand, it makes
|
||||||
* for a more robust library, and it's used everywhere else in ecore.
|
* for a more robust library, and it's used everywhere else in ecore.
|
||||||
*/
|
*/
|
||||||
Ecore_Hash *data, *group, *Categories, *OnlyShowIn, *NotShowIn, *MimeTypes, *Actions;
|
Eina_Hash *data, *group, *Categories, *OnlyShowIn, *NotShowIn, *MimeTypes, *Actions;
|
||||||
char *original_path;
|
char *original_path;
|
||||||
char *original_lang;
|
char *original_lang;
|
||||||
char *eap_name;
|
char *eap_name;
|
||||||
|
@ -72,7 +72,7 @@ typedef struct _Ecore_Desktop Ecore_Desktop;
|
||||||
|
|
||||||
struct _Ecore_Desktop_Icon_Theme
|
struct _Ecore_Desktop_Icon_Theme
|
||||||
{
|
{
|
||||||
Ecore_Hash *data, *group;
|
Eina_Hash *data, *group;
|
||||||
Ecore_List *Inherits;
|
Ecore_List *Inherits;
|
||||||
Ecore_List *Directories;
|
Ecore_List *Directories;
|
||||||
char *path;
|
char *path;
|
||||||
|
@ -92,7 +92,7 @@ typedef struct _Ecore_Desktop_Icon_Theme Ecore_Desktop_Icon_Theme;
|
||||||
|
|
||||||
struct _Ecore_Desktop_Icon_Theme_Directory
|
struct _Ecore_Desktop_Icon_Theme_Directory
|
||||||
{
|
{
|
||||||
Ecore_Hash *icons;
|
Eina_Hash *icons;
|
||||||
char *path;
|
char *path;
|
||||||
char *full_path;
|
char *full_path;
|
||||||
char *type;
|
char *type;
|
||||||
|
@ -201,12 +201,12 @@ extern "C"
|
||||||
void *data);
|
void *data);
|
||||||
EAPI int ecore_desktop_paths_shutdown(void);
|
EAPI int ecore_desktop_paths_shutdown(void);
|
||||||
|
|
||||||
Ecore_Hash *ecore_desktop_paths_to_hash(const char *paths);
|
Eina_Hash *ecore_desktop_paths_to_hash(const char *paths);
|
||||||
Ecore_List *ecore_desktop_paths_to_list(const char *paths);
|
Ecore_List *ecore_desktop_paths_to_list(const char *paths);
|
||||||
|
|
||||||
EAPI int ecore_desktop_init(void);
|
EAPI int ecore_desktop_init(void);
|
||||||
EAPI int ecore_desktop_shutdown(void);
|
EAPI int ecore_desktop_shutdown(void);
|
||||||
Ecore_Hash *ecore_desktop_ini_get(const char *file);
|
Eina_Hash *ecore_desktop_ini_get(const char *file);
|
||||||
Ecore_Desktop *ecore_desktop_get(const char *file, const char *lang);
|
Ecore_Desktop *ecore_desktop_get(const char *file, const char *lang);
|
||||||
void ecore_desktop_save(Ecore_Desktop * desktop);
|
void ecore_desktop_save(Ecore_Desktop * desktop);
|
||||||
EAPI Ecore_List *ecore_desktop_get_command(Ecore_Desktop * desktop,
|
EAPI Ecore_List *ecore_desktop_get_command(Ecore_Desktop * desktop,
|
||||||
|
@ -220,7 +220,7 @@ extern "C"
|
||||||
const char *icon_size,
|
const char *icon_size,
|
||||||
const char *icon_theme);
|
const char *icon_theme);
|
||||||
|
|
||||||
Ecore_Hash *ecore_desktop_icon_theme_list(void);
|
Eina_Hash *ecore_desktop_icon_theme_list(void);
|
||||||
Ecore_Desktop_Icon_Theme *ecore_desktop_icon_theme_get(const char *file,
|
Ecore_Desktop_Icon_Theme *ecore_desktop_icon_theme_get(const char *file,
|
||||||
const char *lang);
|
const char *lang);
|
||||||
void ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme
|
void ecore_desktop_icon_theme_destroy(Ecore_Desktop_Icon_Theme
|
||||||
|
@ -228,7 +228,7 @@ extern "C"
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_desktop_menu_for_each(void (*func)
|
ecore_desktop_menu_for_each(void (*func)
|
||||||
(const char *name, const char *path, const char *directory, Ecore_Hash * apps));
|
(const char *name, const char *path, const char *directory, Eina_Hash * apps));
|
||||||
Ecore_Desktop_Tree *ecore_desktop_menu_get(char *file);
|
Ecore_Desktop_Tree *ecore_desktop_menu_get(char *file);
|
||||||
|
|
||||||
Ecore_Desktop_Tree *ecore_desktop_tree_new(char *buffer);
|
Ecore_Desktop_Tree *ecore_desktop_tree_new(char *buffer);
|
||||||
|
@ -249,7 +249,7 @@ extern "C"
|
||||||
Ecore_Desktop_Tree *
|
Ecore_Desktop_Tree *
|
||||||
element);
|
element);
|
||||||
Ecore_Desktop_Tree *ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree,
|
Ecore_Desktop_Tree *ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree,
|
||||||
Ecore_Hash * element);
|
Eina_Hash * element);
|
||||||
void ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree,
|
void ecore_desktop_tree_remove(Ecore_Desktop_Tree * tree,
|
||||||
int element);
|
int element);
|
||||||
int ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree,
|
int ecore_desktop_tree_exist(Ecore_Desktop_Tree * tree,
|
||||||
|
|
|
@ -14,12 +14,12 @@ extern int reject_count, not_over_count;
|
||||||
|
|
||||||
static int init_count = 0;
|
static int init_count = 0;
|
||||||
|
|
||||||
static Ecore_Hash *desktop_cache;
|
static Eina_Hash *desktop_cache = NULL;
|
||||||
|
|
||||||
Ecore_Desktop *_ecore_desktop_get(const char *file, const char *lang);
|
Ecore_Desktop *_ecore_desktop_get(const char *file, const char *lang);
|
||||||
void _ecore_desktop_destroy(Ecore_Desktop * desktop);
|
void _ecore_desktop_destroy(Ecore_Desktop * desktop);
|
||||||
|
|
||||||
#define IFGETDUP(src, key, dst) src = (char *)ecore_hash_get(result->group, key); if (src) dst = strdup(src); else dst = NULL;
|
#define IFGETDUP(src, key, dst) src = (char *)eina_hash_find(result->group, key); if (src) dst = strdup(src); else dst = NULL;
|
||||||
#define IFFREE(src) if (src) free(src); src = NULL;
|
#define IFFREE(src) if (src) free(src); src = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,35 +33,33 @@ void _ecore_desktop_destroy(Ecore_Desktop * desktop);
|
||||||
/**
|
/**
|
||||||
* Get the contents of a .ini style file.
|
* Get the contents of a .ini style file.
|
||||||
*
|
*
|
||||||
* The Ecore_Hash returned is a two level hash, the first level
|
* The Eina_Hash returned is a two level hash, the first level
|
||||||
* is the groups in the file, one per group, keyed by the name
|
* is the groups in the file, one per group, keyed by the name
|
||||||
* of that group. The value of each of those first level hashes
|
* of that group. The value of each of those first level hashes
|
||||||
* is the second level Ecore_Hash, the contents of each group.
|
* is the second level Eina_Hash, the contents of each group.
|
||||||
*
|
*
|
||||||
* @param file Full path to the .ini style file.
|
* @param file Full path to the .ini style file.
|
||||||
* @return An Ecore_Hash of the files contents.
|
* @return An Eina_Hash of the files contents.
|
||||||
* @ingroup Ecore_Desktop_Main_Group
|
* @ingroup Ecore_Desktop_Main_Group
|
||||||
*/
|
*/
|
||||||
Ecore_Hash *
|
Eina_Hash *
|
||||||
ecore_desktop_ini_get(const char *file)
|
ecore_desktop_ini_get(const char *file)
|
||||||
{
|
{
|
||||||
Ecore_Hash *result;
|
Eina_Hash *result;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char buffer[PATH_MAX];
|
char buffer[PATH_MAX];
|
||||||
Ecore_Hash *current = NULL;
|
Eina_Hash *current = NULL;
|
||||||
|
|
||||||
result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
result = eina_hash_string_superfast_new(eina_hash_free);
|
||||||
if (!result) return NULL;
|
if (!result) return NULL;
|
||||||
|
|
||||||
f = fopen(file, "r");
|
f = fopen(file, "r");
|
||||||
if (!f)
|
if (!f)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: Cannot Open File %s\n", file);
|
fprintf(stderr, "ERROR: Cannot Open File %s\n", file);
|
||||||
ecore_hash_destroy(result);
|
eina_hash_free(result);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ecore_hash_free_key_cb_set(result, free);
|
|
||||||
ecore_hash_free_value_cb_set(result, (Ecore_Free_Cb) ecore_hash_destroy);
|
|
||||||
*buffer = '\0';
|
*buffer = '\0';
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stdout, "PARSING INI %s\n", file);
|
fprintf(stdout, "PARSING INI %s\n", file);
|
||||||
|
@ -84,12 +82,10 @@ ecore_desktop_ini_get(const char *file)
|
||||||
while ((*c != ']') && (*c != '\n') && (*c != '\0'))
|
while ((*c != ']') && (*c != '\n') && (*c != '\0'))
|
||||||
c++;
|
c++;
|
||||||
*c++ = '\0';
|
*c++ = '\0';
|
||||||
current = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
current = ein_hash_string_superfast_new(free);
|
||||||
if (current)
|
if (current)
|
||||||
{
|
{
|
||||||
ecore_hash_free_key_cb_set(current, free);
|
eina_hash_add(result, key, current);
|
||||||
ecore_hash_free_value_cb_set(current, free);
|
|
||||||
ecore_hash_set(result, strdup(key), current);
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stdout, " GROUP [%s]\n", key);
|
fprintf(stdout, " GROUP [%s]\n", key);
|
||||||
#endif
|
#endif
|
||||||
|
@ -121,10 +117,9 @@ ecore_desktop_ini_get(const char *file)
|
||||||
c++;
|
c++;
|
||||||
*c++ = '\0';
|
*c++ = '\0';
|
||||||
/* FIXME: should strip space at end, then unescape value. */
|
/* FIXME: should strip space at end, then unescape value. */
|
||||||
tv = ecore_hash_remove(current, key);
|
eina_hash_del(current, key);
|
||||||
if (tv) free(tv);
|
|
||||||
if (value[0] != '\0')
|
if (value[0] != '\0')
|
||||||
ecore_hash_set(current, strdup(key), strdup(value));
|
eina_hash_add(current, key, strdup(value));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stdout, " %s=%s\n", key, value);
|
fprintf(stdout, " %s=%s\n", key, value);
|
||||||
#endif
|
#endif
|
||||||
|
@ -158,7 +153,7 @@ ecore_desktop_get(const char *file, const char *lang)
|
||||||
/* Kill the hash, it takes up way too much memory. */
|
/* Kill the hash, it takes up way too much memory. */
|
||||||
if (result->data)
|
if (result->data)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(result->data);
|
eina_hash_free(result->data);
|
||||||
result->data = NULL;
|
result->data = NULL;
|
||||||
}
|
}
|
||||||
result->group = NULL;
|
result->group = NULL;
|
||||||
|
@ -178,7 +173,7 @@ _ecore_desktop_get(const char *file, const char *lang)
|
||||||
double begin;
|
double begin;
|
||||||
|
|
||||||
begin = ecore_time_get();
|
begin = ecore_time_get();
|
||||||
result = (Ecore_Desktop *) ecore_hash_get(desktop_cache, (char *)file);
|
result = eina_hash_find(desktop_cache, (char *)file);
|
||||||
/* Check if the cache is still valid. */
|
/* Check if the cache is still valid. */
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
|
@ -187,7 +182,7 @@ _ecore_desktop_get(const char *file, const char *lang)
|
||||||
{
|
{
|
||||||
if (st.st_mtime > result->mtime)
|
if (st.st_mtime > result->mtime)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(desktop_cache, result->original_path);
|
eina_hash_del(desktop_cache, result->original_path);
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
stated = 1;
|
stated = 1;
|
||||||
|
@ -214,9 +209,9 @@ _ecore_desktop_get(const char *file, const char *lang)
|
||||||
/* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
|
/* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
|
||||||
if ((stated) || (stat(result->original_path, &st) >= 0))
|
if ((stated) || (stat(result->original_path, &st) >= 0))
|
||||||
result->mtime = st.st_mtime;
|
result->mtime = st.st_mtime;
|
||||||
result->group = ecore_hash_get(result->data, "Desktop Entry");
|
result->group = eina_hash_find(result->data, "Desktop Entry");
|
||||||
if (!result->group)
|
if (!result->group)
|
||||||
result->group = ecore_hash_get(result->data, "KDE Desktop Entry");
|
result->group = eina_hash_find(result->data, "KDE Desktop Entry");
|
||||||
/* This is a "Desktop" file, probably an application. */
|
/* This is a "Desktop" file, probably an application. */
|
||||||
if (result->group)
|
if (result->group)
|
||||||
{
|
{
|
||||||
|
@ -428,42 +423,42 @@ _ecore_desktop_get(const char *file, const char *lang)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
value = ecore_hash_get(result->group, "MimeType");
|
value = eina_hash_find(result->group, "MimeType");
|
||||||
if (value)
|
if (value)
|
||||||
result->MimeTypes =
|
result->MimeTypes =
|
||||||
ecore_desktop_paths_to_hash(value);
|
ecore_desktop_paths_to_hash(value);
|
||||||
value = ecore_hash_get(result->group, "Actions");
|
value = eina_hash_find(result->group, "Actions");
|
||||||
if (value)
|
if (value)
|
||||||
result->Actions =
|
result->Actions =
|
||||||
ecore_desktop_paths_to_hash(value);
|
ecore_desktop_paths_to_hash(value);
|
||||||
value = ecore_hash_get(result->group, "OnlyShowIn");
|
value = eina_hash_find(result->group, "OnlyShowIn");
|
||||||
if (value)
|
if (value)
|
||||||
result->OnlyShowIn =
|
result->OnlyShowIn =
|
||||||
ecore_desktop_paths_to_hash(value);
|
ecore_desktop_paths_to_hash(value);
|
||||||
value = ecore_hash_get(result->group, "NotShowIn");
|
value = eina_hash_find(result->group, "NotShowIn");
|
||||||
if (value)
|
if (value)
|
||||||
result->NotShowIn =
|
result->NotShowIn =
|
||||||
ecore_desktop_paths_to_hash(value);
|
ecore_desktop_paths_to_hash(value);
|
||||||
value = ecore_hash_get(result->group, "X-KDE-StartupNotify");
|
value = eina_hash_find(result->group, "X-KDE-StartupNotify");
|
||||||
if (value)
|
if (value)
|
||||||
result->startup = (strcmp(value, "true") == 0);
|
result->startup = (strcmp(value, "true") == 0);
|
||||||
value = ecore_hash_get(result->group, "StartupNotify");
|
value = eina_hash_find(result->group, "StartupNotify");
|
||||||
if (value)
|
if (value)
|
||||||
result->startup = (strcmp(value, "true") == 0);
|
result->startup = (strcmp(value, "true") == 0);
|
||||||
value = ecore_hash_get(result->group, "X-Enlightenment-WaitExit");
|
value = eina_hash_find(result->group, "X-Enlightenment-WaitExit");
|
||||||
if (value)
|
if (value)
|
||||||
result->wait_exit = (strcmp(value, "true") == 0);
|
result->wait_exit = (strcmp(value, "true") == 0);
|
||||||
value = ecore_hash_get(result->group, "NoDisplay");
|
value = eina_hash_find(result->group, "NoDisplay");
|
||||||
if (value)
|
if (value)
|
||||||
result->no_display = (strcmp(value, "true") == 0);
|
result->no_display = (strcmp(value, "true") == 0);
|
||||||
value = ecore_hash_get(result->group, "Hidden");
|
value = eina_hash_find(result->group, "Hidden");
|
||||||
if (value)
|
if (value)
|
||||||
result->hidden = (strcmp(value, "true") == 0);
|
result->hidden = (strcmp(value, "true") == 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*Maybe it's a 'trash' file - which also follows the Desktop FDO spec */
|
/*Maybe it's a 'trash' file - which also follows the Desktop FDO spec */
|
||||||
result->group = ecore_hash_get(result->data, "Trash Info");
|
result->group = eina_hash_find(result->data, "Trash Info");
|
||||||
if (result->group)
|
if (result->group)
|
||||||
{
|
{
|
||||||
IFGETDUP(value, "Path", result->path);
|
IFGETDUP(value, "Path", result->path);
|
||||||
|
@ -479,7 +474,7 @@ _ecore_desktop_get(const char *file, const char *lang)
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ecore_hash_set(desktop_cache, strdup(result->original_path), result);
|
eina_hash_add(desktop_cache, result->original_path, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -504,6 +499,13 @@ error:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_keys(Eina_Hash *hash, const void *key, void *data, void *list)
|
||||||
|
{
|
||||||
|
ecore_list_append(list, key);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ecore_desktop_save(Ecore_Desktop * desktop)
|
ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
{
|
{
|
||||||
|
@ -517,27 +519,20 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
{
|
{
|
||||||
desktop->data = ecore_desktop_ini_get(desktop->original_path);
|
desktop->data = ecore_desktop_ini_get(desktop->original_path);
|
||||||
desktop->group =
|
desktop->group =
|
||||||
(Ecore_Hash *) ecore_hash_get(desktop->data, "Desktop Entry");
|
(Eina_Hash *) eina_hash_find(desktop->data, "Desktop Entry");
|
||||||
if (!desktop->group)
|
if (!desktop->group)
|
||||||
desktop->group =
|
desktop->group =
|
||||||
(Ecore_Hash *) ecore_hash_get(desktop->data,
|
(Eina_Hash *) eina_hash_find(desktop->data,
|
||||||
"KDE Desktop Entry");
|
"KDE Desktop Entry");
|
||||||
if (!desktop->group)
|
if (!desktop->group)
|
||||||
{
|
{
|
||||||
trash = 1;
|
trash = 1;
|
||||||
desktop->group =
|
desktop->group =
|
||||||
(Ecore_Hash *) ecore_hash_get(desktop->data, "Trash Info");
|
(Eina_Hash *) eina_hash_find(desktop->data, "Trash Info");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
desktop->group = eina_hash_string_superfast_new(free);
|
||||||
desktop->group = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
|
||||||
if (desktop->group)
|
|
||||||
{
|
|
||||||
ecore_hash_free_key_cb_set(desktop->group, free);
|
|
||||||
ecore_hash_free_value_cb_set(desktop->group, free);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (desktop->group)
|
if (desktop->group)
|
||||||
|
@ -552,8 +547,8 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
|
|
||||||
real = ecore_file_readlink(desktop->original_path);
|
real = ecore_file_readlink(desktop->original_path);
|
||||||
if (real)
|
if (real)
|
||||||
ecore_hash_set(desktop->group,
|
eina_hash_add(desktop->group,
|
||||||
strdup("X-Enlightenment-OriginalPath"),
|
"X-Enlightenment-OriginalPath",
|
||||||
real);
|
real);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -564,93 +559,93 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
{
|
{
|
||||||
temp = ecore_list_first(commands);
|
temp = ecore_list_first(commands);
|
||||||
if (temp)
|
if (temp)
|
||||||
ecore_hash_set(desktop->group, strdup("Exec"), strdup(temp));
|
eina_hash_add(desktop->group, "Exec", strdup(temp));
|
||||||
ecore_list_destroy(commands);
|
ecore_list_destroy(commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (desktop->name)
|
if (desktop->name)
|
||||||
ecore_hash_set(desktop->group, strdup("Name"),
|
eina_hash_add(desktop->group, "Name",
|
||||||
strdup(desktop->name));
|
strdup(desktop->name));
|
||||||
if (desktop->generic)
|
if (desktop->generic)
|
||||||
ecore_hash_set(desktop->group, strdup("GenericName"),
|
eina_hash_add(desktop->group, "GenericName",
|
||||||
strdup(desktop->generic));
|
strdup(desktop->generic));
|
||||||
if (desktop->comment)
|
if (desktop->comment)
|
||||||
ecore_hash_set(desktop->group, strdup("Comment"),
|
eina_hash_add(desktop->group, "Comment",
|
||||||
strdup(desktop->comment));
|
strdup(desktop->comment));
|
||||||
if (desktop->type)
|
if (desktop->type)
|
||||||
ecore_hash_set(desktop->group, strdup("Type"),
|
eina_hash_add(desktop->group, "Type",
|
||||||
strdup(desktop->type));
|
strdup(desktop->type));
|
||||||
if (desktop->URL)
|
if (desktop->URL)
|
||||||
ecore_hash_set(desktop->group, strdup("URL"), strdup(desktop->URL));
|
eina_hash_add(desktop->group, "URL", strdup(desktop->URL));
|
||||||
if (desktop->file)
|
if (desktop->file)
|
||||||
ecore_hash_set(desktop->group, strdup("File"),
|
eina_hash_add(desktop->group, "File",
|
||||||
strdup(desktop->file));
|
strdup(desktop->file));
|
||||||
if (desktop->icon)
|
if (desktop->icon)
|
||||||
ecore_hash_set(desktop->group, strdup("Icon"),
|
eina_hash_add(desktop->group, "Icon",
|
||||||
strdup(desktop->icon));
|
strdup(desktop->icon));
|
||||||
if (desktop->icon_theme)
|
if (desktop->icon_theme)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconTheme"),
|
eina_hash_add(desktop->group, "X-Enlightenment-IconTheme",
|
||||||
strdup(desktop->icon_theme));
|
strdup(desktop->icon_theme));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-IconTheme");
|
eina_hash_del(desktop->group, "X-Enlightenment-IconTheme");
|
||||||
if (desktop->icon_class)
|
if (desktop->icon_class)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconClass"),
|
eina_hash_add(desktop->group, "X-Enlightenment-IconClass",
|
||||||
strdup(desktop->icon_class));
|
strdup(desktop->icon_class));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-IconClass");
|
eina_hash_del(desktop->group, "X-Enlightenment-IconClass");
|
||||||
if (desktop->icon_path)
|
if (desktop->icon_path)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-IconPath"),
|
eina_hash_add(desktop->group, "X-Enlightenment-IconPath",
|
||||||
strdup(desktop->icon_path));
|
strdup(desktop->icon_path));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-IconPath");
|
eina_hash_del(desktop->group, "X-Enlightenment-IconPath");
|
||||||
if (desktop->window_class)
|
if (desktop->window_class)
|
||||||
ecore_hash_set(desktop->group, strdup("StartupWMClass"),
|
eina_hash_add(desktop->group, "StartupWMClass",
|
||||||
strdup(desktop->window_class));
|
strdup(desktop->window_class));
|
||||||
if (desktop->categories)
|
if (desktop->categories)
|
||||||
ecore_hash_set(desktop->group, strdup("Categories"),
|
eina_hash_add(desktop->group, "Categories",
|
||||||
strdup(desktop->categories));
|
strdup(desktop->categories));
|
||||||
if (desktop->window_name)
|
if (desktop->window_name)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowName"),
|
eina_hash_add(desktop->group, "X-Enlightenment-WindowName",
|
||||||
strdup(desktop->window_name));
|
strdup(desktop->window_name));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-WindowName");
|
eina_hash_del(desktop->group, "X-Enlightenment-WindowName");
|
||||||
if (desktop->window_title)
|
if (desktop->window_title)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowTitle"),
|
eina_hash_add(desktop->group, "X-Enlightenment-WindowTitle",
|
||||||
strdup(desktop->window_title));
|
strdup(desktop->window_title));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-WindowTitle");
|
eina_hash_del(desktop->group, "X-Enlightenment-WindowTitle");
|
||||||
if (desktop->window_role)
|
if (desktop->window_role)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-WindowRole"),
|
eina_hash_add(desktop->group, "X-Enlightenment-WindowRole",
|
||||||
strdup(desktop->window_role));
|
strdup(desktop->window_role));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-WindowRole");
|
eina_hash_del(desktop->group, "X-Enlightenment-WindowRole");
|
||||||
ecore_hash_remove(desktop->group, "X-KDE-StartupNotify");
|
eina_hash_del(desktop->group, "X-KDE-StartupNotify");
|
||||||
if (desktop->wait_exit)
|
if (desktop->wait_exit)
|
||||||
ecore_hash_set(desktop->group, strdup("X-Enlightenment-WaitExit"),
|
eina_hash_add(desktop->group, "X-Enlightenment-WaitExit",
|
||||||
strdup("true"));
|
strdup("true"));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "X-Enlightenment-WaitExit");
|
eina_hash_del(desktop->group, "X-Enlightenment-WaitExit");
|
||||||
if (desktop->startup)
|
if (desktop->startup)
|
||||||
ecore_hash_set(desktop->group, strdup("StartupNotify"),
|
eina_hash_add(desktop->group, "StartupNotify",
|
||||||
strdup("true"));
|
strdup("true"));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "StartupNotify");
|
eina_hash_del(desktop->group, "StartupNotify");
|
||||||
if (desktop->no_display)
|
if (desktop->no_display)
|
||||||
ecore_hash_set(desktop->group, strdup("NoDisplay"), strdup("true"));
|
eina_hash_add(desktop->group, "NoDisplay", strdup("true"));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "NoDisplay");
|
eina_hash_del(desktop->group, "NoDisplay");
|
||||||
if (desktop->hidden)
|
if (desktop->hidden)
|
||||||
ecore_hash_set(desktop->group, strdup("Hidden"), strdup("true"));
|
eina_hash_add(desktop->group, "Hidden", strdup("true"));
|
||||||
else
|
else
|
||||||
ecore_hash_remove(desktop->group, "Hidden");
|
eina_hash_del(desktop->group, "Hidden");
|
||||||
|
|
||||||
/* FIXME: deal with the ShowIn's and mime stuff. */
|
/* FIXME: deal with the ShowIn's and mime stuff. */
|
||||||
|
|
||||||
if (desktop->path)
|
if (desktop->path)
|
||||||
ecore_hash_set(desktop->group, strdup("Path"),
|
eina_hash_add(desktop->group, "Path",
|
||||||
strdup(desktop->path));
|
strdup(desktop->path));
|
||||||
if (desktop->deletiondate)
|
if (desktop->deletiondate)
|
||||||
ecore_hash_set(desktop->group, strdup("DeletionDate"),
|
eina_hash_add(desktop->group, "DeletionDate",
|
||||||
strdup(desktop->deletiondate));
|
strdup(desktop->deletiondate));
|
||||||
|
|
||||||
if (desktop->original_path)
|
if (desktop->original_path)
|
||||||
|
@ -658,10 +653,23 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
FILE *f;
|
FILE *f;
|
||||||
Ecore_List *list;
|
Ecore_List *list;
|
||||||
char *key;
|
char *key;
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
|
|
||||||
ecore_file_unlink(desktop->original_path);
|
ecore_file_unlink(desktop->original_path);
|
||||||
f = fopen(desktop->original_path, "wb");
|
f = fopen(desktop->original_path, "wb");
|
||||||
list = ecore_hash_keys(desktop->group);
|
|
||||||
|
if ((list = ecore_list_new()))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ((it = eina_hash_iterator_key_new(desktop->group)))
|
||||||
|
{
|
||||||
|
ecore_list_destroy(list);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
eina_iterator_foreach(it, EINA_EACH(_hash_keys), list);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
if ((!f) || (!list))
|
if ((!f) || (!list))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -674,7 +682,7 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
{
|
{
|
||||||
char *value;
|
char *value;
|
||||||
|
|
||||||
value = (char *)ecore_hash_get(desktop->group, key);
|
value = (char *)eina_hash_find(desktop->group, key);
|
||||||
if ((value) && (value[0] != '\0'))
|
if ((value) && (value[0] != '\0'))
|
||||||
fprintf(f, "%s=%s\n", key, value);
|
fprintf(f, "%s=%s\n", key, value);
|
||||||
}
|
}
|
||||||
|
@ -683,11 +691,11 @@ ecore_desktop_save(Ecore_Desktop * desktop)
|
||||||
|
|
||||||
if (desktop->data)
|
if (desktop->data)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(desktop->data);
|
eina_hash_free(desktop->data);
|
||||||
desktop->data = NULL;
|
desktop->data = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ecore_hash_destroy(desktop->group);
|
eina_hash_free(desktop->group);
|
||||||
desktop->group = NULL;
|
desktop->group = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -710,15 +718,7 @@ ecore_desktop_init()
|
||||||
return --init_count;
|
return --init_count;
|
||||||
|
|
||||||
if (!desktop_cache)
|
if (!desktop_cache)
|
||||||
{
|
desktop_cache = eina_hash_string_superfast_new(_ecore_desktop_destroy);
|
||||||
desktop_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
|
||||||
if (desktop_cache)
|
|
||||||
{
|
|
||||||
ecore_hash_free_key_cb_set(desktop_cache, free);
|
|
||||||
ecore_hash_free_value_cb_set(desktop_cache,
|
|
||||||
(Ecore_Free_Cb) _ecore_desktop_destroy);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ecore_desktop_icon_init())
|
if (!ecore_desktop_icon_init())
|
||||||
return --init_count;
|
return --init_count;
|
||||||
|
@ -744,7 +744,7 @@ ecore_desktop_shutdown()
|
||||||
|
|
||||||
if (desktop_cache)
|
if (desktop_cache)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(desktop_cache);
|
eina_hash_free(desktop_cache);
|
||||||
desktop_cache = NULL;
|
desktop_cache = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -795,14 +795,14 @@ _ecore_desktop_destroy(Ecore_Desktop * desktop)
|
||||||
IFFREE(desktop->window_name);
|
IFFREE(desktop->window_name);
|
||||||
IFFREE(desktop->window_title);
|
IFFREE(desktop->window_title);
|
||||||
IFFREE(desktop->window_role);
|
IFFREE(desktop->window_role);
|
||||||
if (desktop->NotShowIn) ecore_hash_destroy(desktop->NotShowIn);
|
if (desktop->NotShowIn) eina_hash_free(desktop->NotShowIn);
|
||||||
if (desktop->OnlyShowIn) ecore_hash_destroy(desktop->OnlyShowIn);
|
if (desktop->OnlyShowIn) eina_hash_free(desktop->OnlyShowIn);
|
||||||
if (desktop->Categories) ecore_hash_destroy(desktop->Categories);
|
if (desktop->Categories) eina_hash_free(desktop->Categories);
|
||||||
if (desktop->MimeTypes) ecore_hash_destroy(desktop->MimeTypes);
|
if (desktop->MimeTypes) eina_hash_free(desktop->MimeTypes);
|
||||||
if (desktop->Actions) ecore_hash_destroy(desktop->Actions);
|
if (desktop->Actions) eina_hash_free(desktop->Actions);
|
||||||
if (desktop->data)
|
if (desktop->data)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(desktop->data);
|
eina_hash_free(desktop->data);
|
||||||
desktop->data = NULL;
|
desktop->data = NULL;
|
||||||
}
|
}
|
||||||
desktop->group = NULL;
|
desktop->group = NULL;
|
||||||
|
|
|
@ -29,7 +29,7 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme);
|
||||||
static const char *ext[] =
|
static const char *ext[] =
|
||||||
{ "", ".edj", ".png", ".svgz", ".svg", ".xpm", NULL }; /* "" is in case the icon already has an extension, search for that first. */
|
{ "", ".edj", ".png", ".svgz", ".svg", ".xpm", NULL }; /* "" is in case the icon already has an extension, search for that first. */
|
||||||
static int init_count = 0;
|
static int init_count = 0;
|
||||||
static Ecore_Hash *icon_theme_cache = NULL;
|
static Eina_Hash *icon_theme_cache = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @defgroup Ecore_Desktop_Icon_Group icon theme Functions
|
* @defgroup Ecore_Desktop_Icon_Group icon theme Functions
|
||||||
|
@ -233,7 +233,7 @@ _ecore_desktop_icon_find0(const char *icon, const char *icon_size,
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("FDO icon = %s\n", path);
|
printf("FDO icon = %s\n", path);
|
||||||
#endif
|
#endif
|
||||||
found = ecore_hash_get(directory->icons, path);
|
found = eina_hash_find(directory->icons, path);
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
found = strdup(found);
|
found = strdup(found);
|
||||||
|
@ -341,7 +341,7 @@ done:
|
||||||
return found;
|
return found;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ecore_Hash *
|
Eina_Hash*
|
||||||
ecore_desktop_icon_theme_list(void)
|
ecore_desktop_icon_theme_list(void)
|
||||||
{
|
{
|
||||||
static int loaded = 0;
|
static int loaded = 0;
|
||||||
|
@ -382,15 +382,7 @@ ecore_desktop_icon_init()
|
||||||
return init_count;
|
return init_count;
|
||||||
|
|
||||||
if (!icon_theme_cache)
|
if (!icon_theme_cache)
|
||||||
{
|
icon_theme_cache = eina_hash_string_superfast_new(_ecore_desktop_icon_theme_destroy);
|
||||||
icon_theme_cache = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
|
||||||
if (icon_theme_cache)
|
|
||||||
{
|
|
||||||
ecore_hash_free_key_cb_set(icon_theme_cache, free);
|
|
||||||
ecore_hash_free_value_cb_set(icon_theme_cache,
|
|
||||||
ECORE_FREE_CB(_ecore_desktop_icon_theme_destroy));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return init_count;
|
return init_count;
|
||||||
}
|
}
|
||||||
|
@ -411,7 +403,7 @@ ecore_desktop_icon_shutdown()
|
||||||
|
|
||||||
if (icon_theme_cache)
|
if (icon_theme_cache)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(icon_theme_cache);
|
eina_hash_free(icon_theme_cache);
|
||||||
icon_theme_cache = NULL;
|
icon_theme_cache = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,7 +414,7 @@ ecore_desktop_icon_shutdown()
|
||||||
* Get the contents of an index.theme file.
|
* Get the contents of an index.theme file.
|
||||||
*
|
*
|
||||||
* Everything that is in the index.theme file is returned in the
|
* Everything that is in the index.theme file is returned in the
|
||||||
* data member of the Ecore_Desktop_Icon_Theme structure, it's an Ecore_Hash
|
* data member of the Ecore_Desktop_Icon_Theme structure, it's an Eina_Hash
|
||||||
* as returned by ecore_desktop_ini_get(). Some of the data in the
|
* as returned by ecore_desktop_ini_get(). Some of the data in the
|
||||||
* index.theme file is decoded into specific members of the returned
|
* index.theme file is decoded into specific members of the returned
|
||||||
* structure.
|
* structure.
|
||||||
|
@ -454,7 +446,7 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
result = ecore_hash_get(icon_theme_cache, icon_theme);
|
result = eina_hash_find(icon_theme_cache, icon_theme);
|
||||||
if (result) goto done;
|
if (result) goto done;
|
||||||
if (!theme_dir)
|
if (!theme_dir)
|
||||||
{
|
{
|
||||||
|
@ -474,7 +466,7 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
if (!result) goto error;
|
if (!result) goto error;
|
||||||
result->data = ecore_desktop_ini_get(theme_path);
|
result->data = ecore_desktop_ini_get(theme_path);
|
||||||
if (!result->data) goto error;
|
if (!result->data) goto error;
|
||||||
result->group = ecore_hash_get(result->data, "Icon Theme");
|
result->group = eina_hash_find(result->data, "Icon Theme");
|
||||||
if (!result->group) goto error;
|
if (!result->group) goto error;
|
||||||
|
|
||||||
|
|
||||||
|
@ -482,23 +474,23 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
result->hicolor = 1;
|
result->hicolor = 1;
|
||||||
|
|
||||||
/* According to the spec, name and comment are required, but we can fake those easily enough. */
|
/* According to the spec, name and comment are required, but we can fake those easily enough. */
|
||||||
value = ecore_hash_get(result->group, "Name");
|
value = eina_hash_find(result->group, "Name");
|
||||||
if (!value) value = icon_theme;
|
if (!value) value = icon_theme;
|
||||||
result->name = strdup(value);
|
result->name = strdup(value);
|
||||||
value = ecore_hash_get(result->group, "Comment");
|
value = eina_hash_find(result->group, "Comment");
|
||||||
if (!value) value = "No comment provided.";
|
if (!value) value = "No comment provided.";
|
||||||
result->comment = strdup(value);
|
result->comment = strdup(value);
|
||||||
value = ecore_hash_get(result->group, "Inherits");
|
value = eina_hash_find(result->group, "Inherits");
|
||||||
if (value)
|
if (value)
|
||||||
{
|
{
|
||||||
result->inherits = strdup(value);
|
result->inherits = strdup(value);
|
||||||
if (result->inherits)
|
if (result->inherits)
|
||||||
result->Inherits = ecore_desktop_paths_to_list(result->inherits);
|
result->Inherits = ecore_desktop_paths_to_list(result->inherits);
|
||||||
}
|
}
|
||||||
value = ecore_hash_get(result->group, "Example");
|
value = eina_hash_find(result->group, "Example");
|
||||||
if (!value) value = "exec";
|
if (!value) value = "exec";
|
||||||
result->example = strdup(value);
|
result->example = strdup(value);
|
||||||
value = ecore_hash_get(result->group, "Directories");
|
value = eina_hash_find(result->group, "Directories");
|
||||||
/* FIXME: Directories is also required, don't feel like faking it for now. */
|
/* FIXME: Directories is also required, don't feel like faking it for now. */
|
||||||
if (!value) goto error;
|
if (!value) goto error;
|
||||||
result->directories = strdup(value);
|
result->directories = strdup(value);
|
||||||
|
@ -511,11 +503,11 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
ecore_list_first_goto(Directories);
|
ecore_list_first_goto(Directories);
|
||||||
while ((directory = ecore_list_next(Directories)) != NULL)
|
while ((directory = ecore_list_next(Directories)) != NULL)
|
||||||
{
|
{
|
||||||
Ecore_Hash *sub_group;
|
Eina_Hash *sub_group;
|
||||||
Ecore_Desktop_Icon_Theme_Directory *dir;
|
Ecore_Desktop_Icon_Theme_Directory *dir;
|
||||||
|
|
||||||
/* Get the details for this theme directory. */
|
/* Get the details for this theme directory. */
|
||||||
sub_group = ecore_hash_get(result->data, directory);
|
sub_group = eina_hash_find(result->data, directory);
|
||||||
dir = calloc(1, sizeof (Ecore_Desktop_Icon_Theme_Directory));
|
dir = calloc(1, sizeof (Ecore_Desktop_Icon_Theme_Directory));
|
||||||
if ((dir) && (sub_group))
|
if ((dir) && (sub_group))
|
||||||
{
|
{
|
||||||
|
@ -525,14 +517,14 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
dir->path = strdup(directory);
|
dir->path = strdup(directory);
|
||||||
snprintf(full_path, PATH_MAX, "%s/%s", theme_dir, directory);
|
snprintf(full_path, PATH_MAX, "%s/%s", theme_dir, directory);
|
||||||
dir->full_path = strdup(full_path);
|
dir->full_path = strdup(full_path);
|
||||||
value = ecore_hash_get(sub_group, "Type");
|
value = eina_hash_find(sub_group, "Type");
|
||||||
if (!value)
|
if (!value)
|
||||||
value = "Threshold";
|
value = "Threshold";
|
||||||
dir->type = strdup(value);
|
dir->type = strdup(value);
|
||||||
size = ecore_hash_get(sub_group, "Size");
|
size = eina_hash_find(sub_group, "Size");
|
||||||
minsize = ecore_hash_get(sub_group, "MinSize");
|
minsize = eina_hash_find(sub_group, "MinSize");
|
||||||
maxsize = ecore_hash_get(sub_group, "MaxSize");
|
maxsize = eina_hash_find(sub_group, "MaxSize");
|
||||||
threshold = ecore_hash_get(sub_group, "Threshold");
|
threshold = eina_hash_find(sub_group, "Threshold");
|
||||||
if (size)
|
if (size)
|
||||||
{
|
{
|
||||||
if (!minsize)
|
if (!minsize)
|
||||||
|
@ -558,8 +550,8 @@ ecore_desktop_icon_theme_get(const char *icon_theme, const char *lang __UNUSED__
|
||||||
|
|
||||||
/* This passes the basic validation tests, mark it as real and cache it. */
|
/* This passes the basic validation tests, mark it as real and cache it. */
|
||||||
result->path = strdup(theme_path);
|
result->path = strdup(theme_path);
|
||||||
ecore_hash_set(icon_theme_cache, strdup(icon_theme), result);
|
eina_hash_add(icon_theme_cache, icon_theme, result);
|
||||||
ecore_hash_destroy(result->data);
|
eina_hash_free(result->data);
|
||||||
result->data = NULL;
|
result->data = NULL;
|
||||||
result->group = NULL;
|
result->group = NULL;
|
||||||
|
|
||||||
|
@ -576,7 +568,7 @@ error:
|
||||||
if (theme_path) free(theme_path);
|
if (theme_path) free(theme_path);
|
||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
if (result->data) ecore_hash_destroy(result->data);
|
if (result->data) eina_hash_free(result->data);
|
||||||
_ecore_desktop_icon_theme_destroy(result);
|
_ecore_desktop_icon_theme_destroy(result);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -633,7 +625,7 @@ _ecore_desktop_icon_theme_directory_destroy(Ecore_Desktop_Icon_Theme_Directory *
|
||||||
if (icon_theme_directory->type)
|
if (icon_theme_directory->type)
|
||||||
free(icon_theme_directory->type);
|
free(icon_theme_directory->type);
|
||||||
if (icon_theme_directory->icons)
|
if (icon_theme_directory->icons)
|
||||||
ecore_hash_destroy(icon_theme_directory->icons);
|
eina_hash_free(icon_theme_directory->icons);
|
||||||
free(icon_theme_directory);
|
free(icon_theme_directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,16 +678,14 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme)
|
||||||
{
|
{
|
||||||
if (dir->icons)
|
if (dir->icons)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(dir->icons);
|
eina_hash_free(dir->icons);
|
||||||
dir->icons = NULL;
|
dir->icons = NULL;
|
||||||
}
|
}
|
||||||
dir->icons = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
dir->icons = eina_hash_string_superfast_new(NULL);
|
||||||
if (dir->icons)
|
if (dir->icons)
|
||||||
{
|
{
|
||||||
Ecore_List *files;
|
Ecore_List *files;
|
||||||
|
|
||||||
ecore_hash_free_key_cb_set(dir->icons, free);
|
|
||||||
ecore_hash_free_value_cb_set(dir->icons, free);
|
|
||||||
files = ecore_file_ls(dir->full_path);
|
files = ecore_file_ls(dir->full_path);
|
||||||
if (files)
|
if (files)
|
||||||
{
|
{
|
||||||
|
@ -704,7 +694,7 @@ _ecore_desktop_icon_theme_cache_check(Ecore_Desktop_Icon_Theme *icon_theme)
|
||||||
while ((file = ecore_list_next(files)))
|
while ((file = ecore_list_next(files)))
|
||||||
{
|
{
|
||||||
snprintf(full_path, PATH_MAX, "%s/%s", dir->full_path, file);
|
snprintf(full_path, PATH_MAX, "%s/%s", dir->full_path, file);
|
||||||
ecore_hash_set(dir->icons, strdup(file), strdup(full_path));
|
eina_hash_add(dir->icons, file, strdup(full_path));
|
||||||
}
|
}
|
||||||
ecore_list_destroy(files);
|
ecore_list_destroy(files);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
struct _ecore_desktop_menu_expand_apps_data
|
struct _ecore_desktop_menu_expand_apps_data
|
||||||
{
|
{
|
||||||
char *path;
|
char *path;
|
||||||
Ecore_Hash *pool;
|
Eina_Hash *pool;
|
||||||
int length;
|
int length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ struct _ecore_desktop_menu_generate_data
|
||||||
{
|
{
|
||||||
char *name, *path;
|
char *name, *path;
|
||||||
Ecore_Desktop_Tree *rules;
|
Ecore_Desktop_Tree *rules;
|
||||||
Ecore_Hash *pool, *apps;
|
Eina_Hash *pool, *apps;
|
||||||
int unallocated;
|
int unallocated;
|
||||||
|
|
||||||
Ecore_Desktop_Tree *rule;
|
Ecore_Desktop_Tree *rule;
|
||||||
|
@ -88,7 +88,7 @@ static void _ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree,
|
||||||
static int _ecore_desktop_menu_expand_apps(struct
|
static int _ecore_desktop_menu_expand_apps(struct
|
||||||
_ecore_desktop_menu_unxml_data
|
_ecore_desktop_menu_unxml_data
|
||||||
*unxml_data, char *app_dir,
|
*unxml_data, char *app_dir,
|
||||||
Ecore_Hash * pool);
|
Eina_Hash * pool);
|
||||||
static int _ecore_desktop_menu_check_app(void *data, const char *path);
|
static int _ecore_desktop_menu_check_app(void *data, const char *path);
|
||||||
|
|
||||||
static int _ecore_desktop_menu_merge(const void *data,
|
static int _ecore_desktop_menu_merge(const void *data,
|
||||||
|
@ -123,7 +123,7 @@ static int _ecore_desktop_menu_apply_rules(struct
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_desktop_menu_for_each(void (*func)
|
ecore_desktop_menu_for_each(void (*func)
|
||||||
(const char *name, const char *path, const char *directory, Ecore_Hash * apps))
|
(const char *name, const char *path, const char *directory, Eina_Hash * apps))
|
||||||
{
|
{
|
||||||
char *menu_file;
|
char *menu_file;
|
||||||
|
|
||||||
|
@ -177,9 +177,9 @@ _ecore_desktop_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree,
|
||||||
char *path;
|
char *path;
|
||||||
char *name;
|
char *name;
|
||||||
char *directory;
|
char *directory;
|
||||||
Ecore_Hash *apps;
|
Eina_Hash *apps;
|
||||||
void (*func) (char *name, char *path, char *directory,
|
void (*func) (char *name, char *path, char *directory,
|
||||||
Ecore_Hash * apps);
|
Eina_Hash * apps);
|
||||||
|
|
||||||
func = data;
|
func = data;
|
||||||
name = (char *)tree->elements[element].element;
|
name = (char *)tree->elements[element].element;
|
||||||
|
@ -206,8 +206,8 @@ _ecore_desktop_menu_make_apps(const void *data, Ecore_Desktop_Tree * tree,
|
||||||
else
|
else
|
||||||
directory = NULL;
|
directory = NULL;
|
||||||
path = (char *)tree->elements[element + 1].element;
|
path = (char *)tree->elements[element + 1].element;
|
||||||
// pool = (Ecore_Hash *) tree->elements[element + 2].element;
|
// pool = (Eina_Hash *) tree->elements[element + 2].element;
|
||||||
apps = (Ecore_Hash *) tree->elements[element + 4].element;
|
apps = (Eina_Hash *) tree->elements[element + 4].element;
|
||||||
path = &path[11];
|
path = &path[11];
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("OUTPUTTING MENU - %s \t\t%s \t\t%s\n", path, name, directory);
|
printf("OUTPUTTING MENU - %s \t\t%s \t\t%s\n", path, name, directory);
|
||||||
|
@ -650,18 +650,14 @@ static Ecore_Desktop_Tree *
|
||||||
_ecore_desktop_menu_create_menu()
|
_ecore_desktop_menu_create_menu()
|
||||||
{
|
{
|
||||||
Ecore_Desktop_Tree *menu, *rules;
|
Ecore_Desktop_Tree *menu, *rules;
|
||||||
Ecore_Hash *pool, *apps;
|
Eina_Hash *pool, *apps;
|
||||||
|
|
||||||
menu = ecore_desktop_tree_new(NULL);
|
menu = ecore_desktop_tree_new(NULL);
|
||||||
rules = ecore_desktop_tree_new(NULL);
|
rules = ecore_desktop_tree_new(NULL);
|
||||||
pool = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
pool = eina_hash_string_superfast_new(free);
|
||||||
apps = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
apps = eina_hash_string_superfast_new(free);
|
||||||
if ((menu) && (rules) && (pool) && (apps))
|
if ((menu) && (rules) && (pool) && (apps))
|
||||||
{
|
{
|
||||||
ecore_hash_free_key_cb_set(pool, free);
|
|
||||||
ecore_hash_free_value_cb_set(pool, free);
|
|
||||||
ecore_hash_free_key_cb_set(apps, free);
|
|
||||||
ecore_hash_free_value_cb_set(apps, free);
|
|
||||||
ecore_desktop_tree_extend(menu, "<MENU < > <> <>");
|
ecore_desktop_tree_extend(menu, "<MENU < > <> <>");
|
||||||
ecore_desktop_tree_extend(menu, "<MENU_PATH ");
|
ecore_desktop_tree_extend(menu, "<MENU_PATH ");
|
||||||
ecore_desktop_tree_add_hash(menu, pool);
|
ecore_desktop_tree_add_hash(menu, pool);
|
||||||
|
@ -671,9 +667,9 @@ _ecore_desktop_menu_create_menu()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (apps)
|
if (apps)
|
||||||
ecore_hash_destroy(apps);
|
eina_hash_free(apps);
|
||||||
if (pool)
|
if (pool)
|
||||||
ecore_hash_destroy(pool);
|
eina_hash_free(pool);
|
||||||
if (rules)
|
if (rules)
|
||||||
ecore_desktop_tree_del(rules);
|
ecore_desktop_tree_del(rules);
|
||||||
if (menu)
|
if (menu)
|
||||||
|
@ -889,10 +885,10 @@ _ecore_desktop_menu_legacy_menu(void *data, const char *path)
|
||||||
}
|
}
|
||||||
else if (strcmp(".desktop", &file[count - 8]) == 0)
|
else if (strcmp(".desktop", &file[count - 8]) == 0)
|
||||||
{
|
{
|
||||||
Ecore_Hash *pool;
|
Eina_Hash *pool;
|
||||||
Ecore_Desktop_Tree *rules;
|
Ecore_Desktop_Tree *rules;
|
||||||
|
|
||||||
pool = (Ecore_Hash *) legacy_data->current->elements[2].element;
|
pool = (Eina_Hash *) legacy_data->current->elements[2].element;
|
||||||
rules =
|
rules =
|
||||||
(Ecore_Desktop_Tree *) legacy_data->current->elements[3].element;
|
(Ecore_Desktop_Tree *) legacy_data->current->elements[3].element;
|
||||||
if (rules->size == 0)
|
if (rules->size == 0)
|
||||||
|
@ -904,7 +900,7 @@ _ecore_desktop_menu_legacy_menu(void *data, const char *path)
|
||||||
ecore_desktop_tree_add_child(rules, new_rules);
|
ecore_desktop_tree_add_child(rules, new_rules);
|
||||||
}
|
}
|
||||||
sprintf(temp, "%s%s", legacy_data->prefix, file);
|
sprintf(temp, "%s%s", legacy_data->prefix, file);
|
||||||
ecore_hash_set(pool, strdup(temp), strdup(path));
|
eina_hash_add(pool, temp, strdup(path));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// printf
|
// printf
|
||||||
// ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
|
// ("POOLING - _ecore_desktop_menu_legacy_menu(void *data, %s) - %s - %s\n",
|
||||||
|
@ -1066,7 +1062,7 @@ _ecore_desktop_menu_add_dirs(Ecore_Desktop_Tree * tree, Ecore_List * paths,
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_ecore_desktop_menu_expand_apps(struct _ecore_desktop_menu_unxml_data
|
_ecore_desktop_menu_expand_apps(struct _ecore_desktop_menu_unxml_data
|
||||||
*unxml_data, char *app_dir, Ecore_Hash * pool)
|
*unxml_data, char *app_dir, Eina_Hash * pool)
|
||||||
{
|
{
|
||||||
if (pool)
|
if (pool)
|
||||||
{
|
{
|
||||||
|
@ -1107,12 +1103,17 @@ _ecore_desktop_menu_check_app(void *data, const char *path)
|
||||||
char *file;
|
char *file;
|
||||||
|
|
||||||
file = strdup(path + our_data->length);
|
file = strdup(path + our_data->length);
|
||||||
if ((file) && (path))
|
if (file)
|
||||||
|
{
|
||||||
|
if (path)
|
||||||
{
|
{
|
||||||
for (i = 0; file[i] != '\0'; i++)
|
for (i = 0; file[i] != '\0'; i++)
|
||||||
if (file[i] == '/')
|
if (file[i] == '/')
|
||||||
file[i] = '-';
|
file[i] = '-';
|
||||||
ecore_hash_set(our_data->pool, file, strdup(path));
|
eina_hash_add(our_data->pool, file, strdup(path));
|
||||||
|
}
|
||||||
|
free(file);
|
||||||
|
}
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// printf
|
// printf
|
||||||
// ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
|
// ("POOLING - _ecore_desktop_menu_check_app(void *data, %s) - %s\n",
|
||||||
|
@ -1423,9 +1424,9 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
|
||||||
generate_data.unallocated = unxml_data->unallocated;
|
generate_data.unallocated = unxml_data->unallocated;
|
||||||
generate_data.name = (char *)tree->elements[element].element;
|
generate_data.name = (char *)tree->elements[element].element;
|
||||||
generate_data.path = (char *)tree->elements[element + 1].element;
|
generate_data.path = (char *)tree->elements[element + 1].element;
|
||||||
generate_data.pool = (Ecore_Hash *) tree->elements[element + 2].element;
|
generate_data.pool = (Eina_Hash *) tree->elements[element + 2].element;
|
||||||
generate_data.rules = (Ecore_Desktop_Tree *) tree->elements[element + 3].element;
|
generate_data.rules = (Ecore_Desktop_Tree *) tree->elements[element + 3].element;
|
||||||
generate_data.apps = (Ecore_Hash *) tree->elements[element + 4].element;
|
generate_data.apps = (Eina_Hash *) tree->elements[element + 4].element;
|
||||||
|
|
||||||
/* generate and inherit the pools on the first pass, and preparse the include/exclude logic. */
|
/* generate and inherit the pools on the first pass, and preparse the include/exclude logic. */
|
||||||
if (!generate_data.unallocated)
|
if (!generate_data.unallocated)
|
||||||
|
@ -1511,10 +1512,10 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
|
||||||
{
|
{
|
||||||
if (unxml_data->stack->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
|
if (unxml_data->stack->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
|
||||||
{
|
{
|
||||||
Ecore_Hash *ancestor;
|
Eina_Hash *ancestor;
|
||||||
|
|
||||||
ancestor = (Ecore_Hash *) unxml_data->stack->elements[i].element;
|
ancestor = (Eina_Hash *) unxml_data->stack->elements[i].element;
|
||||||
ecore_hash_for_each_node(ancestor, _ecore_desktop_menu_inherit_apps, generate_data.pool);
|
eina_hash_foreach(ancestor, _ecore_desktop_menu_inherit_apps, generate_data.pool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1542,12 +1543,12 @@ _ecore_desktop_menu_generate(const void *data, Ecore_Desktop_Tree * tree,
|
||||||
if (type == 'I')
|
if (type == 'I')
|
||||||
{
|
{
|
||||||
generate_data.include = TRUE;
|
generate_data.include = TRUE;
|
||||||
ecore_hash_for_each_node(generate_data.pool, _ecore_desktop_menu_select_app, &generate_data);
|
eina_hash_foreach(generate_data.pool, _ecore_desktop_menu_select_app, &generate_data);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
generate_data.include = FALSE;
|
generate_data.include = FALSE;
|
||||||
ecore_hash_for_each_node(generate_data.apps, _ecore_desktop_menu_select_app, &generate_data);
|
eina_hash_foreach(generate_data.apps, _ecore_desktop_menu_select_app, &generate_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1575,39 +1576,26 @@ _ecore_desktop_menu_is_include(const void *data, Ecore_Desktop_Tree * tree, int
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_ecore_desktop_menu_inherit_apps(void *value, void *user_data)
|
_ecore_desktop_menu_inherit_apps(const Eina_Hash *hash, const void *key, void *value, void *user_data)
|
||||||
{
|
{
|
||||||
Ecore_Hash_Node *node;
|
|
||||||
Ecore_Hash *pool;
|
|
||||||
char *key, *app;
|
|
||||||
|
|
||||||
pool = (Ecore_Hash *) user_data;
|
|
||||||
node = (Ecore_Hash_Node *) value;
|
|
||||||
key = (char *)node->key;
|
|
||||||
app = (char *)node->value;
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
// printf("CHECKING %s - %s\n", app, key);
|
// printf("CHECKING %s - %s\n", app, key);
|
||||||
#endif
|
#endif
|
||||||
if (!ecore_hash_get(pool, key))
|
if (!eina_hash_find(user_data, key))
|
||||||
ecore_hash_set(pool, strdup(key), strdup(app));
|
eina_hash_add(user_data, key, strdup(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_desktop_menu_select_app(void *value, void *user_data)
|
_ecore_desktop_menu_select_app(const Eina_Hash *hash, const void *key, void *value, void *user_data)
|
||||||
{
|
{
|
||||||
Ecore_Hash_Node *node;
|
|
||||||
Ecore_Desktop *desktop;
|
Ecore_Desktop *desktop;
|
||||||
struct _ecore_desktop_menu_generate_data *generate_data;
|
struct _ecore_desktop_menu_generate_data *generate_data;
|
||||||
char *key, *app;
|
|
||||||
|
|
||||||
node = (Ecore_Hash_Node *) value;
|
|
||||||
generate_data = (struct _ecore_desktop_menu_generate_data *)user_data;
|
generate_data = (struct _ecore_desktop_menu_generate_data *)user_data;
|
||||||
key = (char *)node->key;
|
|
||||||
app = (char *)node->value;
|
|
||||||
|
|
||||||
/* FIXME: pass an actuall language parameter. */
|
/* FIXME: pass an actuall language parameter. */
|
||||||
desktop = ecore_desktop_get(app, NULL);
|
desktop = ecore_desktop_get(value, NULL);
|
||||||
|
|
||||||
if (desktop)
|
if (desktop)
|
||||||
{
|
{
|
||||||
|
@ -1619,16 +1607,16 @@ _ecore_desktop_menu_select_app(void *value, void *user_data)
|
||||||
desktop->allocated = TRUE;
|
desktop->allocated = TRUE;
|
||||||
if (generate_data->include)
|
if (generate_data->include)
|
||||||
{
|
{
|
||||||
ecore_hash_set(generate_data->apps, key, strdup(app));
|
eina_hash_add(generate_data->apps, key, strdup(value));
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("INCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
|
printf("INCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), value, key);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ecore_hash_remove(generate_data->apps, key);
|
eina_hash_del(generate_data->apps, key);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf("EXCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), app, key);
|
printf("EXCLUDING %s%s - %s\n", ((generate_data->unallocated) ? "UNALLOCATED " : ""), value, key);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1675,7 +1663,7 @@ _ecore_desktop_menu_apply_rules(struct _ecore_desktop_menu_generate_data *genera
|
||||||
case 'C':
|
case 'C':
|
||||||
{
|
{
|
||||||
/* Try to match a category. */
|
/* Try to match a category. */
|
||||||
if ((desktop->Categories) && (ecore_hash_get(desktop->Categories, &rul[4]) != NULL))
|
if ((desktop->Categories) && (eina_hash_find(desktop->Categories, &rul[4]) != NULL))
|
||||||
sub_result = TRUE;
|
sub_result = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -898,25 +898,23 @@ _ecore_desktop_paths_cb_exe_exit(void *data, int type, void *event)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Split a list of paths into an Ecore_Hash.
|
/** Split a list of paths into an Eina_Hash.
|
||||||
*
|
*
|
||||||
* The list of paths can use any one of ;:, to seperate the paths.
|
* The list of paths can use any one of ;:, to seperate the paths.
|
||||||
* You can also escape the :;, with \.
|
* You can also escape the :;, with \.
|
||||||
*
|
*
|
||||||
* @param paths A list of paths.
|
* @param paths A list of paths.
|
||||||
*/
|
*/
|
||||||
Ecore_Hash *
|
Eina_Hash*
|
||||||
ecore_desktop_paths_to_hash(const char *paths)
|
ecore_desktop_paths_to_hash(const char *paths)
|
||||||
{
|
{
|
||||||
Ecore_Hash *result;
|
Eina_Hash *result;
|
||||||
char *path;
|
char *path;
|
||||||
char buf[PATH_MAX], *p, *pp;
|
char buf[PATH_MAX], *p, *pp;
|
||||||
|
|
||||||
if (!paths) return NULL;
|
if (!paths) return NULL;
|
||||||
result = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
result = eina_hash_string_superfast_new(free);
|
||||||
if (!result) return NULL;
|
if (!result) return NULL;
|
||||||
ecore_hash_free_key_cb_set(result, free);
|
|
||||||
ecore_hash_free_value_cb_set(result, free);
|
|
||||||
|
|
||||||
path = strdup(paths);
|
path = strdup(paths);
|
||||||
if (path)
|
if (path)
|
||||||
|
@ -942,7 +940,7 @@ ecore_desktop_paths_to_hash(const char *paths)
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
*pp = '\0';
|
*pp = '\0';
|
||||||
if (*buf) ecore_hash_set(result, strdup(buf), strdup(buf));
|
if (*buf) eina_hash_add(result, buf, strdup(buf));
|
||||||
if (*p) p++;
|
if (*p) p++;
|
||||||
else p = NULL;
|
else p = NULL;
|
||||||
}
|
}
|
||||||
|
@ -951,7 +949,7 @@ ecore_desktop_paths_to_hash(const char *paths)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Split a list of paths into an Ecore_Hash.
|
/** Split a list of paths into an Eina_Hash.
|
||||||
*
|
*
|
||||||
* The list of paths can use any one of ;:, to seperate the paths.
|
* The list of paths can use any one of ;:, to seperate the paths.
|
||||||
* You can also escape the :;, with \.
|
* You can also escape the :;, with \.
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
#include "Ecore_Desktop.h"
|
#include "Ecore_Desktop.h"
|
||||||
#include "ecore_desktop_private.h"
|
#include "ecore_desktop_private.h"
|
||||||
|
|
||||||
static void ecore_desktop_tree_dump_each_hash_node(void *value,
|
static Eina_Bool
|
||||||
|
ecore_desktop_tree_dump_each_hash_node(const Eina_Hash *hash,
|
||||||
|
const void *key,
|
||||||
|
void *value,
|
||||||
void *user_data);
|
void *user_data);
|
||||||
|
|
||||||
/* Just a quick and dirty tree implemtation that will likely get replaced by
|
/* Just a quick and dirty tree implemtation that will likely get replaced by
|
||||||
|
@ -172,7 +175,7 @@ ecore_desktop_tree_add_child(Ecore_Desktop_Tree * tree,
|
||||||
}
|
}
|
||||||
|
|
||||||
Ecore_Desktop_Tree *
|
Ecore_Desktop_Tree *
|
||||||
ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Ecore_Hash * element)
|
ecore_desktop_tree_add_hash(Ecore_Desktop_Tree * tree, Eina_Hash * element)
|
||||||
{
|
{
|
||||||
tree->elements =
|
tree->elements =
|
||||||
(Ecore_Desktop_Tree_Element *) realloc(tree->elements,
|
(Ecore_Desktop_Tree_Element *) realloc(tree->elements,
|
||||||
|
@ -310,7 +313,7 @@ ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree, int level)
|
||||||
|
|
||||||
lev = level + 1;
|
lev = level + 1;
|
||||||
printf("HASH ELEMENT TYPE\n");
|
printf("HASH ELEMENT TYPE\n");
|
||||||
ecore_hash_for_each_node((Ecore_Hash *) tree->elements[i].
|
eina_hash_foreach((Eina_Hash *) tree->elements[i].
|
||||||
element,
|
element,
|
||||||
ecore_desktop_tree_dump_each_hash_node,
|
ecore_desktop_tree_dump_each_hash_node,
|
||||||
&lev);
|
&lev);
|
||||||
|
@ -326,18 +329,19 @@ ecore_desktop_tree_dump(Ecore_Desktop_Tree * tree, int level)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
ecore_desktop_tree_dump_each_hash_node(void *value, void *user_data)
|
ecore_desktop_tree_dump_each_hash_node(const Eina_Hash *hash,
|
||||||
|
const void *key,
|
||||||
|
void *value,
|
||||||
|
void *user_data)
|
||||||
{
|
{
|
||||||
Ecore_Hash_Node *node;
|
|
||||||
int level;
|
int level;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
node = (Ecore_Hash_Node *) value;
|
|
||||||
level = *((int *)user_data);
|
level = *((int *)user_data);
|
||||||
for (j = 0; j < level; j++)
|
for (j = 0; j < level; j++)
|
||||||
printf(".");
|
printf(".");
|
||||||
printf("%s = %s\n", (char *)node->key, (char *)node->value);
|
printf("%s = %s\n", (char *)key, (char *)value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -351,7 +355,7 @@ ecore_desktop_tree_del(Ecore_Desktop_Tree * tree)
|
||||||
ecore_desktop_tree_del((Ecore_Desktop_Tree *) tree->elements[i].
|
ecore_desktop_tree_del((Ecore_Desktop_Tree *) tree->elements[i].
|
||||||
element);
|
element);
|
||||||
else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
|
else if (tree->elements[i].type == ECORE_DESKTOP_TREE_ELEMENT_TYPE_HASH)
|
||||||
ecore_hash_destroy((Ecore_Hash *) tree->elements[i].element);
|
eina_hash_free((Eina_Hash *) tree->elements[i].element);
|
||||||
}
|
}
|
||||||
|
|
||||||
E_FREE(tree->elements);
|
E_FREE(tree->elements);
|
||||||
|
|
|
@ -43,7 +43,7 @@ static Ecore_Fd_Handler *_window_event_fd_handler_handle = NULL;
|
||||||
static Ecore_Fd_Handler *_input_event_fd_handler_handle = NULL;
|
static Ecore_Fd_Handler *_input_event_fd_handler_handle = NULL;
|
||||||
|
|
||||||
/* this hash is to store all the possible key names for fast lookup */
|
/* this hash is to store all the possible key names for fast lookup */
|
||||||
static Ecore_Hash *_ecore_directfb_key_symbols_hash = NULL;
|
static Eina_Hash *_ecore_directfb_key_symbols_hash = NULL;
|
||||||
|
|
||||||
|
|
||||||
static IDirectFB *_dfb = NULL; // the main interface
|
static IDirectFB *_dfb = NULL; // the main interface
|
||||||
|
@ -163,7 +163,7 @@ _ecore_directfb_event_handle_key_down(DFBEvent *evt)
|
||||||
{
|
{
|
||||||
case DFEC_INPUT:
|
case DFEC_INPUT:
|
||||||
key_symbol = evt->input.key_symbol;
|
key_symbol = evt->input.key_symbol;
|
||||||
k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
|
k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
|
||||||
|
|
||||||
if(!k)
|
if(!k)
|
||||||
{
|
{
|
||||||
|
@ -179,7 +179,7 @@ _ecore_directfb_event_handle_key_down(DFBEvent *evt)
|
||||||
|
|
||||||
case DFEC_WINDOW:
|
case DFEC_WINDOW:
|
||||||
key_symbol = evt->window.key_symbol;
|
key_symbol = evt->window.key_symbol;
|
||||||
k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
|
k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
|
||||||
|
|
||||||
if(!k)
|
if(!k)
|
||||||
{
|
{
|
||||||
|
@ -211,7 +211,7 @@ _ecore_directfb_event_handle_key_up(DFBEvent *evt)
|
||||||
{
|
{
|
||||||
case DFEC_INPUT:
|
case DFEC_INPUT:
|
||||||
key_symbol = evt->input.key_symbol;
|
key_symbol = evt->input.key_symbol;
|
||||||
k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
|
k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
|
||||||
|
|
||||||
|
|
||||||
if(!k)
|
if(!k)
|
||||||
|
@ -228,7 +228,7 @@ _ecore_directfb_event_handle_key_up(DFBEvent *evt)
|
||||||
|
|
||||||
case DFEC_WINDOW:
|
case DFEC_WINDOW:
|
||||||
key_symbol = evt->window.key_symbol;
|
key_symbol = evt->window.key_symbol;
|
||||||
k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &key_symbol);
|
k = eina_hash_find(_ecore_directfb_key_symbols_hash, &key_symbol);
|
||||||
|
|
||||||
if(!k)
|
if(!k)
|
||||||
{
|
{
|
||||||
|
@ -698,14 +698,14 @@ ecore_directfb_init(const char *name)
|
||||||
ECORE_DIRECTFB_EVENT_WHEEL = ecore_event_type_new();;
|
ECORE_DIRECTFB_EVENT_WHEEL = ecore_event_type_new();;
|
||||||
|
|
||||||
/* create the hash table for the keynames */
|
/* create the hash table for the keynames */
|
||||||
_ecore_directfb_key_symbols_hash = ecore_hash_new(_ecore_directfb_hash_create,_ecore_directfb_hash_compare);
|
_ecore_directfb_key_symbols_hash = eina_hash_int32_new(NULL);
|
||||||
for(i=0; i<_ecore_directfb_key_symbols_count; i++)
|
for(i=0; i<_ecore_directfb_key_symbols_count; i++)
|
||||||
{
|
{
|
||||||
struct keymap *k;
|
struct keymap *k;
|
||||||
k = malloc(sizeof(struct keymap));
|
k = malloc(sizeof(struct keymap));
|
||||||
k->name = _ecore_directfb_key_symbols[i].name;
|
k->name = _ecore_directfb_key_symbols[i].name;
|
||||||
k->string = _ecore_directfb_key_symbols[i].string;
|
k->string = _ecore_directfb_key_symbols[i].string;
|
||||||
ecore_hash_set(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id, k);
|
eina_hash_add(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id, k);
|
||||||
}
|
}
|
||||||
/* create the hash for the windows(key = windowid, val = Ecore_DirectFB_Window struct) */
|
/* create the hash for the windows(key = windowid, val = Ecore_DirectFB_Window struct) */
|
||||||
return _ecore_directfb_init_count;
|
return _ecore_directfb_init_count;
|
||||||
|
@ -728,8 +728,8 @@ ecore_directfb_shutdown(void)
|
||||||
for(i=0; i<_ecore_directfb_key_symbols_count; i++)
|
for(i=0; i<_ecore_directfb_key_symbols_count; i++)
|
||||||
{
|
{
|
||||||
struct keymap *k;
|
struct keymap *k;
|
||||||
k = ecore_hash_get(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
|
k = eina_hash_find(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
|
||||||
ecore_hash_remove(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
|
eina_hash_del(_ecore_directfb_key_symbols_hash, &_ecore_directfb_key_symbols[i].id);
|
||||||
free(k);
|
free(k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -687,7 +687,7 @@ ecore_evas_data_get(const Ecore_Evas *ee, const char *key)
|
||||||
|
|
||||||
if (!key) return NULL;
|
if (!key) return NULL;
|
||||||
|
|
||||||
return evas_hash_find(ee->data, key);
|
return eina_hash_find(ee->data, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -717,9 +717,13 @@ ecore_evas_data_set(Ecore_Evas *ee, const char *key, const void *data)
|
||||||
|
|
||||||
if (!key) return;
|
if (!key) return;
|
||||||
|
|
||||||
ee->data = evas_hash_del(ee->data, key, NULL);
|
eina_hash_del(ee->data, key, NULL);
|
||||||
if (data)
|
if (data)
|
||||||
ee->data = evas_hash_add(ee->data, key, data);
|
{
|
||||||
|
if (!ee->data)
|
||||||
|
ee->data = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ee->data, key, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IFC(_ee, _fn) if (_ee->engine.func->_fn) {_ee->engine.func->_fn
|
#define IFC(_ee, _fn) if (_ee->engine.func->_fn) {_ee->engine.func->_fn
|
||||||
|
@ -2410,7 +2414,7 @@ _ecore_evas_free(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
_ecore_evas_free(ee->sub_ecore_evas->data);
|
_ecore_evas_free(ee->sub_ecore_evas->data);
|
||||||
}
|
}
|
||||||
if (ee->data) evas_hash_free(ee->data);
|
if (ee->data) eina_hash_free(ee->data);
|
||||||
if (ee->name) free(ee->name);
|
if (ee->name) free(ee->name);
|
||||||
if (ee->prop.title) free(ee->prop.title);
|
if (ee->prop.title) free(ee->prop.title);
|
||||||
if (ee->prop.name) free(ee->prop.name);
|
if (ee->prop.name) free(ee->prop.name);
|
||||||
|
|
|
@ -14,7 +14,7 @@ static int _ecore_evas_fps_debug = 0;
|
||||||
static Ecore_Event_Handler *ecore_evas_event_handlers[13];
|
static Ecore_Event_Handler *ecore_evas_event_handlers[13];
|
||||||
|
|
||||||
static Ecore_Evas *ecore_evases = NULL;
|
static Ecore_Evas *ecore_evases = NULL;
|
||||||
static Evas_Hash *ecore_evases_hash = NULL;
|
static Eina_Hash *ecore_evases_hash = NULL;
|
||||||
|
|
||||||
static Ecore_Idle_Enterer *ecore_evas_directfb_idle_enterer = NULL;
|
static Ecore_Idle_Enterer *ecore_evas_directfb_idle_enterer = NULL;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ _ecore_evas_directfb_match(DFBWindowID win)
|
||||||
{
|
{
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
|
|
||||||
ee = evas_hash_find(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(win));
|
ee = eina_hash_find(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(win));
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,7 +334,7 @@ _ecore_evas_directfb_init(void)
|
||||||
static void
|
static void
|
||||||
_ecore_evas_directfb_free(Ecore_Evas *ee)
|
_ecore_evas_directfb_free(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
||||||
ecore_directfb_window_del(ee->engine.directfb.window);
|
ecore_directfb_window_del(ee->engine.directfb.window);
|
||||||
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
||||||
_ecore_evas_directfb_shutdown();
|
_ecore_evas_directfb_shutdown();
|
||||||
|
@ -601,7 +601,9 @@ ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w
|
||||||
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
||||||
}
|
}
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -233,7 +233,7 @@ struct _Ecore_Evas
|
||||||
Eina_Bool should_be_visible : 1;
|
Eina_Bool should_be_visible : 1;
|
||||||
Eina_Bool alpha : 1;
|
Eina_Bool alpha : 1;
|
||||||
|
|
||||||
Evas_Hash *data;
|
Eina_Hash *data;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
|
@ -29,7 +29,7 @@ static int _ecore_evas_fps_debug = 0;
|
||||||
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
||||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||||
static Ecore_Evas *ecore_evases = NULL;
|
static Ecore_Evas *ecore_evases = NULL;
|
||||||
static Evas_Hash *ecore_evases_hash = NULL;
|
static Eina_Hash *ecore_evases_hash = NULL;
|
||||||
|
|
||||||
static int _ecore_evas_win32_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
|
static int _ecore_evas_win32_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ _ecore_evas_win32_match(Ecore_Win32_Window *window)
|
||||||
{
|
{
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
|
|
||||||
ee = evas_hash_find(ecore_evases_hash, _ecore_evas_win32_winid_str_get(window));
|
ee = eina_hash_find(ecore_evases_hash, _ecore_evas_win32_winid_str_get(window));
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
@ -586,7 +586,7 @@ static void
|
||||||
_ecore_evas_win32_free(Ecore_Evas *ee)
|
_ecore_evas_win32_free(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
ecore_win32_window_del(ee->engine.win32.window);
|
ecore_win32_window_del(ee->engine.win32.window);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
|
||||||
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
||||||
_ecore_evas_win32_shutdown();
|
_ecore_evas_win32_shutdown();
|
||||||
ecore_win32_shutdown();
|
ecore_win32_shutdown();
|
||||||
|
@ -1178,7 +1178,9 @@ _ecore_evas_win32_new_internal(int (*_ecore_evas_engine_init)(Ecore_Evas *ee),
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_win32_winid_str_get(ee->engine.win32.window), ee);
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ static int _ecore_evas_fps_debug = 0;
|
||||||
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
||||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||||
static Ecore_Evas *ecore_evases = NULL;
|
static Ecore_Evas *ecore_evases = NULL;
|
||||||
static Evas_Hash *ecore_evases_hash = NULL;
|
static Eina_Hash *ecore_evases_hash = NULL;
|
||||||
|
|
||||||
static int _ecore_evas_wince_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
|
static int _ecore_evas_wince_event_key_down(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ _ecore_evas_wince_match(Ecore_WinCE_Window *window)
|
||||||
{
|
{
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
|
|
||||||
ee = evas_hash_find(ecore_evases_hash, _ecore_evas_wince_winid_str_get(window));
|
ee = eina_hash_find(ecore_evases_hash, _ecore_evas_wince_winid_str_get(window));
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
@ -507,7 +507,7 @@ static void
|
||||||
_ecore_evas_wince_free(Ecore_Evas *ee)
|
_ecore_evas_wince_free(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
ecore_wince_window_del(ee->engine.wince.window);
|
ecore_wince_window_del(ee->engine.wince.window);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
|
||||||
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
||||||
_ecore_evas_wince_shutdown();
|
_ecore_evas_wince_shutdown();
|
||||||
ecore_wince_shutdown();
|
ecore_wince_shutdown();
|
||||||
|
@ -988,7 +988,9 @@ ecore_evas_software_wince_new_internal(int backend,
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_wince_winid_str_get(ee->engine.wince.window), ee);
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ static int _ecore_evas_init_count = 0;
|
||||||
static int _ecore_evas_fps_debug = 0;
|
static int _ecore_evas_fps_debug = 0;
|
||||||
|
|
||||||
static Ecore_Evas *ecore_evases = NULL;
|
static Ecore_Evas *ecore_evases = NULL;
|
||||||
static Evas_Hash *ecore_evases_hash = NULL;
|
static Eina_Hash *ecore_evases_hash = NULL;
|
||||||
static Ecore_Event_Handler *ecore_evas_event_handlers[18];
|
static Ecore_Event_Handler *ecore_evas_event_handlers[18];
|
||||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ _ecore_evas_x_match(Ecore_X_Window win)
|
||||||
{
|
{
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
|
|
||||||
ee = evas_hash_find(ecore_evases_hash, _ecore_evas_x_winid_str_get(win));
|
ee = eina_hash_find(ecore_evases_hash, _ecore_evas_x_winid_str_get(win));
|
||||||
return ee;
|
return ee;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1330,14 +1330,14 @@ _ecore_evas_x_free(Ecore_Evas *ee)
|
||||||
#else
|
#else
|
||||||
ee->engine.x.damages = 0;
|
ee->engine.x.damages = 0;
|
||||||
#endif /* ! HAVE_ECORE_X_XCB */
|
#endif /* ! HAVE_ECORE_X_XCB */
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
while (ee->engine.x.win_extra)
|
while (ee->engine.x.win_extra)
|
||||||
{
|
{
|
||||||
Ecore_X_Window *winp;
|
Ecore_X_Window *winp;
|
||||||
|
|
||||||
winp = ee->engine.x.win_extra->data;
|
winp = ee->engine.x.win_extra->data;
|
||||||
ee->engine.x.win_extra = eina_list_remove_list(ee->engine.x.win_extra, ee->engine.x.win_extra);
|
ee->engine.x.win_extra = eina_list_remove_list(ee->engine.x.win_extra, ee->engine.x.win_extra);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(*winp), ee);
|
||||||
free(winp);
|
free(winp);
|
||||||
}
|
}
|
||||||
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
ecore_evases = _ecore_list2_remove(ecore_evases, ee);
|
||||||
|
@ -1838,7 +1838,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ee->shaped = 0;
|
ee->shaped = 0;
|
||||||
ee->alpha = alpha;
|
ee->alpha = alpha;
|
||||||
ecore_x_window_del(ee->engine.x.win);
|
ecore_x_window_del(ee->engine.x.win);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->alpha)
|
if (ee->alpha)
|
||||||
{
|
{
|
||||||
if (ee->prop.override)
|
if (ee->prop.override)
|
||||||
|
@ -1886,7 +1886,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
||||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
||||||
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->prop.borderless)
|
if (ee->prop.borderless)
|
||||||
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
||||||
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
||||||
|
@ -1917,7 +1919,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ee->shaped = 0;
|
ee->shaped = 0;
|
||||||
ee->alpha = alpha;
|
ee->alpha = alpha;
|
||||||
ecore_x_window_del(ee->engine.x.win);
|
ecore_x_window_del(ee->engine.x.win);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->alpha)
|
if (ee->alpha)
|
||||||
{
|
{
|
||||||
if (ee->prop.override)
|
if (ee->prop.override)
|
||||||
|
@ -1958,7 +1960,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
||||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
||||||
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->prop.borderless)
|
if (ee->prop.borderless)
|
||||||
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
||||||
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
||||||
|
@ -1981,7 +1985,7 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
ee->shaped = 0;
|
ee->shaped = 0;
|
||||||
ee->alpha = alpha;
|
ee->alpha = alpha;
|
||||||
ecore_x_window_del(ee->engine.x.win);
|
ecore_x_window_del(ee->engine.x.win);
|
||||||
ecore_evases_hash = evas_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
eina_hash_del(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->alpha)
|
if (ee->alpha)
|
||||||
{
|
{
|
||||||
if (ee->prop.override)
|
if (ee->prop.override)
|
||||||
|
@ -2016,7 +2020,9 @@ _ecore_evas_x_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
||||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
|
||||||
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
ecore_x_window_shape_mask_set(ee->engine.x.win, 0);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
if (ee->prop.borderless)
|
if (ee->prop.borderless)
|
||||||
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
ecore_x_mwm_borderless_set(ee->engine.x.win, ee->prop.borderless);
|
||||||
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
if (ee->visible) ecore_x_window_show(ee->engine.x.win);
|
||||||
|
@ -2832,7 +2838,9 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
return ee;
|
return ee;
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -2933,7 +2941,9 @@ ecore_evas_software_x11_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window wi
|
||||||
{
|
{
|
||||||
*winp = win;
|
*winp = win;
|
||||||
ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
|
ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#endif
|
#endif
|
||||||
|
@ -3020,7 +3030,9 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
# endif /* HAVE_ECORE_X_XCB */
|
# endif /* HAVE_ECORE_X_XCB */
|
||||||
|
|
||||||
return ee;
|
return ee;
|
||||||
|
@ -3279,7 +3291,9 @@ ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
return ee;
|
return ee;
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -3493,7 +3507,9 @@ ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
|
||||||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||||
|
|
||||||
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
ecore_evases = _ecore_list2_prepend(ecore_evases, ee);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
if (!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(ee->engine.x.win), ee);
|
||||||
return ee;
|
return ee;
|
||||||
#else
|
#else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -3594,7 +3610,9 @@ ecore_evas_software_x11_16_extra_event_window_add(Ecore_Evas *ee, Ecore_X_Window
|
||||||
{
|
{
|
||||||
*winp = win;
|
*winp = win;
|
||||||
ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
|
ee->engine.x.win_extra = eina_list_append(ee->engine.x.win_extra, winp);
|
||||||
ecore_evases_hash = evas_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
|
if(!ecore_evases_hash)
|
||||||
|
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||||
|
eina_hash_add(ecore_evases_hash, _ecore_evas_x_winid_str_get(win), ee);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
|
#endif /* ! BUILD_ECORE_EVAS_SOFTWARE_16_X11 */
|
||||||
|
|
|
@ -15,8 +15,14 @@ static void _ecore_imf_module_append(Ecore_Plugin *plugin, const Ecore_IMF_Conte
|
||||||
static void _ecore_imf_module_free(Ecore_IMF_Module *module);
|
static void _ecore_imf_module_free(Ecore_IMF_Module *module);
|
||||||
static int _ecore_imf_modules_exists(const char *ctx_id);
|
static int _ecore_imf_modules_exists(const char *ctx_id);
|
||||||
|
|
||||||
|
typedef struct _Ecore_IMF_Selector
|
||||||
|
{
|
||||||
|
const char *toselect;
|
||||||
|
void *selected;
|
||||||
|
} Ecore_IMF_Selector;
|
||||||
|
|
||||||
static Ecore_Path_Group *ecore_imf_modules_path = NULL;
|
static Ecore_Path_Group *ecore_imf_modules_path = NULL;
|
||||||
static Ecore_Hash *modules = NULL;
|
static Eina_Hash *modules = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
ecore_imf_module_init(void)
|
ecore_imf_module_init(void)
|
||||||
|
@ -46,7 +52,7 @@ ecore_imf_module_shutdown(void)
|
||||||
{
|
{
|
||||||
if (modules)
|
if (modules)
|
||||||
{
|
{
|
||||||
ecore_hash_destroy(modules);
|
eina_hash_free(modules);
|
||||||
modules = NULL;
|
modules = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,27 +60,35 @@ ecore_imf_module_shutdown(void)
|
||||||
ecore_imf_modules_path = NULL;
|
ecore_imf_modules_path = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_module_available_get(const Eina_Hash *hash, int *data, void *list)
|
||||||
|
{
|
||||||
|
ecore_list_append(list, data);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
Ecore_List *
|
Ecore_List *
|
||||||
ecore_imf_module_available_get(void)
|
ecore_imf_module_available_get(void)
|
||||||
{
|
{
|
||||||
Ecore_List *values;
|
Ecore_List *values;
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
|
||||||
if (!modules) return NULL;
|
if (!modules) return NULL;
|
||||||
|
|
||||||
/* ecore_hash_values() */
|
|
||||||
values = ecore_list_new();
|
values = ecore_list_new();
|
||||||
while (i < ecore_prime_table[modules->size])
|
if (!values) return NULL;
|
||||||
{
|
|
||||||
if (modules->buckets[i])
|
|
||||||
{
|
|
||||||
Ecore_Hash_Node *node;
|
|
||||||
|
|
||||||
for (node = modules->buckets[i]; node; node = node->next)
|
it = eina_hash_iterator_data_new(modules);
|
||||||
ecore_list_append(values, node->value);
|
if (!it)
|
||||||
}
|
{
|
||||||
i++;
|
ecore_list_destroy(values);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eina_iterator_foreach(it, EINA_EACH(_hash_module_available_get), values);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
ecore_list_first_goto(values);
|
ecore_list_first_goto(values);
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
|
@ -84,7 +98,7 @@ Ecore_IMF_Module *
|
||||||
ecore_imf_module_get(const char *ctx_id)
|
ecore_imf_module_get(const char *ctx_id)
|
||||||
{
|
{
|
||||||
if (!modules) return NULL;
|
if (!modules) return NULL;
|
||||||
return ecore_hash_get(modules, ctx_id);
|
return eina_hash_find(modules, ctx_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ecore_IMF_Context *
|
Ecore_IMF_Context *
|
||||||
|
@ -94,7 +108,7 @@ ecore_imf_module_context_create(const char *ctx_id)
|
||||||
Ecore_IMF_Context *ctx = NULL;
|
Ecore_IMF_Context *ctx = NULL;
|
||||||
|
|
||||||
if (!modules) return NULL;
|
if (!modules) return NULL;
|
||||||
module = ecore_hash_get(modules, ctx_id);
|
module = eina_hash_find(modules, ctx_id);
|
||||||
if (module)
|
if (module)
|
||||||
{
|
{
|
||||||
ctx = module->create();
|
ctx = module->create();
|
||||||
|
@ -109,17 +123,55 @@ ecore_imf_module_context_create(const char *ctx_id)
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_ids_get(const Eina_Hash *hash, const char *key, void *list)
|
||||||
|
{
|
||||||
|
ecore_list_append(list, key);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
Ecore_List *
|
Ecore_List *
|
||||||
ecore_imf_module_context_ids_get(void)
|
ecore_imf_module_context_ids_get(void)
|
||||||
{
|
{
|
||||||
|
Ecore_List *l = NULL;
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
|
|
||||||
if (!modules) return NULL;
|
if (!modules) return NULL;
|
||||||
return ecore_hash_keys(modules);
|
|
||||||
|
l = ecore_list_new();
|
||||||
|
if (!l) return NULL;
|
||||||
|
|
||||||
|
it = eina_hash_iterator_key_new(modules);
|
||||||
|
if (!it)
|
||||||
|
{
|
||||||
|
ecore_list_destroy(l);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
eina_iterator_foreach(it, EINA_EACH(_hash_ids_get), l);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
|
return l;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_ids_by_canvas_type_get(const Eina_Hash *hash, int *data, void *fdata)
|
||||||
|
{
|
||||||
|
Ecore_IMF_Module *module = data;
|
||||||
|
Ecore_IMF_Selector *selector = fdata;
|
||||||
|
|
||||||
|
if (!strcmp(module->info->canvas_type, selector->toselect))
|
||||||
|
ecore_list_append(selector->selected, (void *)module->info->id);
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ecore_List *
|
Ecore_List *
|
||||||
ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
|
ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
|
||||||
{
|
{
|
||||||
|
Ecore_IMF_Selector selector;
|
||||||
Ecore_List *values;
|
Ecore_List *values;
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
|
|
||||||
if (!modules) return NULL;
|
if (!modules) return NULL;
|
||||||
|
@ -128,21 +180,20 @@ ecore_imf_module_context_ids_by_canvas_type_get(const char *canvas_type)
|
||||||
return ecore_imf_module_context_ids_get();
|
return ecore_imf_module_context_ids_get();
|
||||||
|
|
||||||
values = ecore_list_new();
|
values = ecore_list_new();
|
||||||
while (i < ecore_prime_table[modules->size])
|
if (!values) return NULL;
|
||||||
{
|
|
||||||
if (modules->buckets[i])
|
|
||||||
{
|
|
||||||
Ecore_Hash_Node *node;
|
|
||||||
|
|
||||||
for (node = modules->buckets[i]; node; node = node->next)
|
it = eina_hash_iterator_data_new(modules);
|
||||||
|
if (!it)
|
||||||
{
|
{
|
||||||
Ecore_IMF_Module *module = node->value;
|
ecore_list_destroy(values);
|
||||||
if (strcmp(module->info->canvas_type, canvas_type) == 0)
|
return NULL;
|
||||||
ecore_list_append(values, (void *) module->info->id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selector.toselect = canvas_type;
|
||||||
|
selector.selected = values;
|
||||||
|
eina_iterator_foreach(it, EINA_EACH(_hash_ids_by_canvas_type_get), &selector);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
ecore_list_first_goto(values);
|
ecore_list_first_goto(values);
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
|
@ -215,11 +266,7 @@ _ecore_imf_module_append(Ecore_Plugin *plugin,
|
||||||
Ecore_IMF_Module *module;
|
Ecore_IMF_Module *module;
|
||||||
|
|
||||||
if (!modules)
|
if (!modules)
|
||||||
{
|
modules = eina_hash_string_superfast_new(_ecore_imf_module_free);
|
||||||
modules = ecore_hash_new(ecore_str_hash, ecore_str_compare);
|
|
||||||
ecore_hash_free_key_cb_set(modules, free);
|
|
||||||
ecore_hash_free_value_cb_set(modules, (Ecore_Free_Cb) _ecore_imf_module_free);
|
|
||||||
}
|
|
||||||
|
|
||||||
module = malloc(sizeof(Ecore_IMF_Module));
|
module = malloc(sizeof(Ecore_IMF_Module));
|
||||||
module->plugin = plugin;
|
module->plugin = plugin;
|
||||||
|
@ -227,7 +274,7 @@ _ecore_imf_module_append(Ecore_Plugin *plugin,
|
||||||
/* cache imf_module_create as it may be used several times */
|
/* cache imf_module_create as it may be used several times */
|
||||||
module->create = imf_module_create;
|
module->create = imf_module_create;
|
||||||
|
|
||||||
ecore_hash_set(modules, strdup(info->id), module);
|
eina_hash_add(modules, info->id, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -244,6 +291,13 @@ _ecore_imf_module_free(Ecore_IMF_Module *module)
|
||||||
static int
|
static int
|
||||||
_ecore_imf_modules_exists(const char *ctx_id)
|
_ecore_imf_modules_exists(const char *ctx_id)
|
||||||
{
|
{
|
||||||
|
Eina_Iterator *it = NULL;
|
||||||
|
|
||||||
if (!modules) return 0;
|
if (!modules) return 0;
|
||||||
return (ecore_hash_get(modules, ctx_id) != NULL);
|
if (!ctx_id) return 0;
|
||||||
|
|
||||||
|
if (eina_hash_find(modules, ctx_id))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@ static void _ecore_x_netwm_startup_info_free(void *data);
|
||||||
* Local variables
|
* Local variables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static Ecore_Hash *startup_info = NULL;
|
static Eina_Hash *startup_info = NULL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the NetWM module
|
* Initialize the NetWM module
|
||||||
|
@ -68,11 +68,7 @@ static Ecore_Hash *startup_info = NULL;
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_x_netwm_init(void)
|
ecore_x_netwm_init(void)
|
||||||
{
|
{
|
||||||
startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
|
startup_info = eina_hash_string_superfast_new(_ecore_x_netwm_startup_info_free);
|
||||||
if (startup_info)
|
|
||||||
{
|
|
||||||
ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,7 +78,7 @@ EAPI void
|
||||||
ecore_x_netwm_shutdown(void)
|
ecore_x_netwm_shutdown(void)
|
||||||
{
|
{
|
||||||
if (startup_info)
|
if (startup_info)
|
||||||
ecore_hash_destroy(startup_info);
|
eina_hash_free(startup_info);
|
||||||
startup_info = NULL;
|
startup_info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2765,11 +2761,13 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window window,
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
Ecore_X_Startup_Info *info;
|
Ecore_X_Startup_Info *info;
|
||||||
|
unsigned char exists = 0;
|
||||||
|
|
||||||
if (!startup_info) return 0;
|
if (!startup_info) return 0;
|
||||||
info = ecore_hash_get(startup_info, (void *)window);
|
info = eina_hash_find(startup_info, (void *)window);
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
|
exists = 1;
|
||||||
printf("Already got info for win: 0x%x\n", window);
|
printf("Already got info for win: 0x%x\n", window);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
}
|
}
|
||||||
|
@ -2787,7 +2785,10 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window window,
|
||||||
memcpy(info->buffer, data, 20);
|
memcpy(info->buffer, data, 20);
|
||||||
info->length += 20;
|
info->length += 20;
|
||||||
info->buffer[info->length] = 0;
|
info->buffer[info->length] = 0;
|
||||||
ecore_hash_set(startup_info, (void *)info->win, info);
|
if (exists)
|
||||||
|
eina_hash_modify(startup_info, (void *)info->win, info);
|
||||||
|
else
|
||||||
|
eina_hash_add(startup_info, (void *)info->win, info);
|
||||||
if (strlen(info->buffer) != 20)
|
if (strlen(info->buffer) != 20)
|
||||||
{
|
{
|
||||||
/* We have a '\0' in there, the message is done */
|
/* We have a '\0' in there, the message is done */
|
||||||
|
@ -2810,7 +2811,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window window,
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if (!startup_info) return 0;
|
if (!startup_info) return 0;
|
||||||
info = ecore_hash_get(startup_info, (void *)window);
|
info = eina_hash_find(startup_info, (void *)window);
|
||||||
if (!info) return 0;
|
if (!info) return 0;
|
||||||
if ((info->length + 20) > info->buffer_size)
|
if ((info->length + 20) > info->buffer_size)
|
||||||
{
|
{
|
||||||
|
@ -2818,7 +2819,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window window,
|
||||||
info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
|
info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
|
||||||
if (!info->buffer)
|
if (!info->buffer)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2922,7 +2923,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
p = strchr(info->buffer, ':');
|
p = strchr(info->buffer, ':');
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2943,7 +2944,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
|
event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2952,7 +2953,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
|
|
||||||
if (!_ecore_x_netwm_startup_info_parse(info, p))
|
if (!_ecore_x_netwm_startup_info_parse(info, p))
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2962,7 +2963,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
|
e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2972,7 +2973,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
|
|
||||||
if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
|
if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -56,21 +56,19 @@ static void _ecore_x_netwm_startup_info_free(void *data);
|
||||||
* Local variables
|
* Local variables
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static Ecore_Hash *startup_info = NULL;
|
static Eina_Hash *startup_info = NULL;
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_x_netwm_init(void)
|
ecore_x_netwm_init(void)
|
||||||
{
|
{
|
||||||
startup_info = ecore_hash_new(ecore_direct_hash, ecore_direct_compare);
|
startup_info = eina_hash_string_superfast_new(_ecore_x_netwm_startup_info_free);
|
||||||
if (startup_info)
|
|
||||||
ecore_hash_free_value_cb_set(startup_info, _ecore_x_netwm_startup_info_free);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_x_netwm_shutdown(void)
|
ecore_x_netwm_shutdown(void)
|
||||||
{
|
{
|
||||||
if (startup_info)
|
if (startup_info)
|
||||||
ecore_hash_destroy(startup_info);
|
eina_hash_free(startup_info);
|
||||||
startup_info = NULL;
|
startup_info = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1140,11 +1138,13 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
Ecore_X_Startup_Info *info;
|
Ecore_X_Startup_Info *info;
|
||||||
|
unsigned char *exists = 0;
|
||||||
|
|
||||||
if (!startup_info) return 0;
|
if (!startup_info) return 0;
|
||||||
info = ecore_hash_get(startup_info, (void *)win);
|
info = eina_hash_find(startup_info, (void *)win);
|
||||||
if (info)
|
if (info)
|
||||||
{
|
{
|
||||||
|
exists = 1;
|
||||||
printf("Already got info for win: 0x%x\n", win);
|
printf("Already got info for win: 0x%x\n", win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
}
|
}
|
||||||
|
@ -1162,7 +1162,10 @@ _ecore_x_netwm_startup_info_begin(Ecore_X_Window win, char *data)
|
||||||
memcpy(info->buffer, data, 20);
|
memcpy(info->buffer, data, 20);
|
||||||
info->length += 20;
|
info->length += 20;
|
||||||
info->buffer[info->length] = 0;
|
info->buffer[info->length] = 0;
|
||||||
ecore_hash_set(startup_info, (void *)info->win, info);
|
if (exists)
|
||||||
|
eina_hash_modify(startup_info, (void *)info->win, info);
|
||||||
|
else
|
||||||
|
eina_hash_add(startup_info, (void *)info->win, info);
|
||||||
if (strlen(info->buffer) != 20)
|
if (strlen(info->buffer) != 20)
|
||||||
{
|
{
|
||||||
/* We have a '\0' in there, the message is done */
|
/* We have a '\0' in there, the message is done */
|
||||||
|
@ -1183,7 +1186,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data)
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if (!startup_info) return 0;
|
if (!startup_info) return 0;
|
||||||
info = ecore_hash_get(startup_info, (void *)win);
|
info = eina_hash_find(startup_info, (void *)win);
|
||||||
if (!info) return 0;
|
if (!info) return 0;
|
||||||
if ((info->length + 20) > info->buffer_size)
|
if ((info->length + 20) > info->buffer_size)
|
||||||
{
|
{
|
||||||
|
@ -1191,7 +1194,7 @@ _ecore_x_netwm_startup_info(Ecore_X_Window win, char *data)
|
||||||
info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
|
info->buffer = realloc(info->buffer, info->buffer_size * sizeof(char));
|
||||||
if (!info->buffer)
|
if (!info->buffer)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1269,7 +1272,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
p = strchr(info->buffer, ':');
|
p = strchr(info->buffer, ':');
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1290,7 +1293,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
|
event = ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1299,7 +1302,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
|
|
||||||
if (!_ecore_x_netwm_startup_info_parse(info, p))
|
if (!_ecore_x_netwm_startup_info_parse(info, p))
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1309,7 +1312,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
|
e = calloc(1, sizeof(Ecore_X_Event_Startup_Sequence));
|
||||||
if (!e)
|
if (!e)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1319,7 +1322,7 @@ _ecore_x_netwm_startup_info_process(Ecore_X_Startup_Info *info)
|
||||||
|
|
||||||
if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
|
if (event == ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE)
|
||||||
{
|
{
|
||||||
ecore_hash_remove(startup_info, (void *)info->win);
|
eina_hash_del(startup_info, (void *)info->win);
|
||||||
_ecore_x_netwm_startup_info_free(info);
|
_ecore_x_netwm_startup_info_free(info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue