forked from enlightenment/efl
parent
fe0fbd4189
commit
6f441d94a9
|
@ -1,9 +1,27 @@
|
||||||
#include "Efreet.h"
|
#include "Efreet.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
timer(void *data)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
double start;
|
||||||
|
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_name_find("Mozilla Firefox");
|
||||||
|
printf("Mozilla Firefox: %p %.3f\n", desktop, (ecore_time_get() - start));
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_generic_name_find("Mail/News");
|
||||||
|
printf("Mail/News: %p %.3f\n", desktop, (ecore_time_get() - start));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (!efreet_init()) return 1;
|
if (!efreet_init()) return 1;
|
||||||
|
ecore_timer_add(1.0, timer, NULL);
|
||||||
ecore_main_loop_begin();
|
ecore_main_loop_begin();
|
||||||
efreet_shutdown();
|
efreet_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
typedef struct _Efreet_Cache_Fill Efreet_Cache_Fill;
|
typedef struct _Efreet_Cache_Fill Efreet_Cache_Fill;
|
||||||
typedef struct _Efreet_Cache_Fill_Dir Efreet_Cache_Fill_Dir;
|
typedef struct _Efreet_Cache_Fill_Dir Efreet_Cache_Fill_Dir;
|
||||||
|
typedef struct _Efreet_Cache_Search Efreet_Cache_Search;
|
||||||
|
|
||||||
struct _Efreet_Cache_Fill
|
struct _Efreet_Cache_Fill
|
||||||
{
|
{
|
||||||
|
@ -18,8 +19,16 @@ struct _Efreet_Cache_Fill_Dir
|
||||||
char *file_id;
|
char *file_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _Efreet_Cache_Search
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
const char *what;
|
||||||
|
};
|
||||||
|
|
||||||
static int _efreet_util_cache_fill(void *data);
|
static int _efreet_util_cache_fill(void *data);
|
||||||
static void _efreet_util_cache_dir_free(void *data);
|
static void _efreet_util_cache_dir_free(void *data);
|
||||||
|
static void _efreet_util_cache_search_name(void *value, void *data);
|
||||||
|
static void _efreet_util_cache_search_generic_name(void *value, void *data);
|
||||||
|
|
||||||
static Ecore_Hash *desktop_by_file_id = NULL;
|
static Ecore_Hash *desktop_by_file_id = NULL;
|
||||||
static Ecore_Hash *desktop_by_exec = NULL;
|
static Ecore_Hash *desktop_by_exec = NULL;
|
||||||
|
@ -205,7 +214,31 @@ efreet_util_desktop_exec_find(const char *exec)
|
||||||
* timeconsuming.*/
|
* timeconsuming.*/
|
||||||
|
|
||||||
if (desktop) ecore_hash_set(desktop_by_exec, (void *)ecore_string_instance(exec), desktop);
|
if (desktop) ecore_hash_set(desktop_by_exec, (void *)ecore_string_instance(exec), desktop);
|
||||||
return NULL;
|
return desktop;
|
||||||
|
}
|
||||||
|
|
||||||
|
Efreet_Desktop *
|
||||||
|
efreet_util_desktop_name_find(const char *name)
|
||||||
|
{
|
||||||
|
Efreet_Cache_Search search;
|
||||||
|
|
||||||
|
if (!name) return NULL;
|
||||||
|
search.desktop = NULL;
|
||||||
|
search.what = name;
|
||||||
|
ecore_hash_for_each_node(desktop_by_exec, _efreet_util_cache_search_name, &search);
|
||||||
|
return search.desktop;
|
||||||
|
}
|
||||||
|
|
||||||
|
Efreet_Desktop *
|
||||||
|
efreet_util_desktop_generic_name_find(const char *generic_name)
|
||||||
|
{
|
||||||
|
Efreet_Cache_Search search;
|
||||||
|
|
||||||
|
if (!generic_name) return NULL;
|
||||||
|
search.desktop = NULL;
|
||||||
|
search.what = generic_name;
|
||||||
|
ecore_hash_for_each_node(desktop_by_exec, _efreet_util_cache_search_generic_name, &search);
|
||||||
|
return search.desktop;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -330,3 +363,33 @@ _efreet_util_cache_dir_free(void *data)
|
||||||
IF_FREE(dir->file_id);
|
IF_FREE(dir->file_id);
|
||||||
free(dir);
|
free(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_efreet_util_cache_search_name(void *value, void *data)
|
||||||
|
{
|
||||||
|
Ecore_Hash_Node *node;
|
||||||
|
Efreet_Cache_Search *search;
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
|
||||||
|
node = value;
|
||||||
|
search = data;
|
||||||
|
|
||||||
|
desktop = node->value;
|
||||||
|
if (!desktop->name) return;
|
||||||
|
if (!strcmp(desktop->name, search->what)) search->desktop = desktop;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_efreet_util_cache_search_generic_name(void *value, void *data)
|
||||||
|
{
|
||||||
|
Ecore_Hash_Node *node;
|
||||||
|
Efreet_Cache_Search *search;
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
|
||||||
|
node = value;
|
||||||
|
search = data;
|
||||||
|
|
||||||
|
desktop = node->value;
|
||||||
|
if (!desktop->generic_name) return;
|
||||||
|
if (!strcmp(desktop->generic_name, search->what)) search->desktop = desktop;
|
||||||
|
}
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
|
|
||||||
char *efreet_util_path_in_default(const char *section, const char *path);
|
char *efreet_util_path_in_default(const char *section, const char *path);
|
||||||
const char *efreet_util_path_to_file_id(const char *path);
|
const char *efreet_util_path_to_file_id(const char *path);
|
||||||
|
|
||||||
Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
|
Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
|
||||||
Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
|
Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
|
||||||
|
Efreet_Desktop *efreet_util_desktop_name_find(const char *name);
|
||||||
|
Efreet_Desktop *efreet_util_desktop_generic_name_find(const char *generic_name);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue