Port the dirs_list IPC to libe - now up to the functionality it was before IPC changes

SVN revision: 15093
This commit is contained in:
handyande 2005-06-03 17:43:48 +00:00 committed by handyande
parent d123ead829
commit 1e6c395c55
3 changed files with 62 additions and 166 deletions

View File

@ -517,6 +517,52 @@ break;
FREE_LIST(dat);
}
END_GENERIC();
#elif (TYPE == E_LIB_IN)
GENERIC(HDL);
LIST();
DECODE(e_ipc_codec_str_list_dec) {
int count;
char *p, *type;
int res;
RESPONSE(r, E_Response_Dirs_List, HDL);
/* FIXME - this is a mess, needs to be merged into macros... */
count = evas_list_count(dat);
r->dirs = malloc(sizeof(char *) * count);
r->count = count - 1; /* leave off the "type" */
count = 0;
FOR(dat) {
if (dat == l)
type = l->data;
else {
r->dirs[count] = l->data;
count++;
}
}
printf("TYPE %s\n", type);
if (!strcmp(type, "data"))
res = 0;
else if (!strcmp(type, "images"))
res = 0;
else if (!strcmp(type, "fonts"))
res = 0;
else if (!strcmp(type, "themes"))
res = E_RESPONSE_THEME_DIRS_LIST;
else if (!strcmp(type, "init"))
res = 0;
else if (!strcmp(type, "icons"))
res = 0;
else if (!strcmp(type, "modules"))
res = E_RESPONSE_MODULE_DIRS_LIST;
else if (!strcmp(type, "backgrounds"))
res = E_RESPONSE_BACKGROUND_DIRS_LIST;
printf("RES %d\n");
END_RESPONSE(r, res); /* FIXME - need a custom free */
}
END_GENERIC();
#endif
#undef HDL

View File

@ -22,10 +22,8 @@
typedef struct _E_Response_Module_List E_Response_Module_List;
typedef struct _E_Response_Module_Data E_Response_Module_Data;
typedef struct _E_Response_Module_Dirs_List E_Response_Module_Dirs_List;
typedef struct _E_Response_Dirs_List E_Response_Dirs_List;
typedef struct _E_Response_Background_Get E_Response_Background_Get;
typedef struct _E_Response_Background_Dirs_List E_Response_Background_Dirs_List;
typedef struct _E_Response_Theme_Dirs_List E_Response_Theme_Dirs_List;
struct _E_Response_Module_List
{
@ -39,7 +37,7 @@ struct _E_Response_Module_Data
char enabled;
};
struct _E_Response_Module_Dirs_List
struct _E_Response_Dirs_List
{
char **dirs;
int count;
@ -50,18 +48,6 @@ struct _E_Response_Background_Get
char *file;
};
struct _E_Response_Background_Dirs_List
{
char **dirs;
int count;
};
struct _E_Response_Theme_Dirs_List
{
char **dirs;
int count;
};
extern EAPI int E_RESPONSE_MODULE_LIST;
extern EAPI int E_RESPONSE_BACKGROUND_GET;
extern EAPI int E_RESPONSE_MODULE_DIRS_LIST;

View File

@ -63,10 +63,10 @@ static void _e_cb_theme_dir_list_free(void *data __UNUSED__, void *ev);
static Ecore_Ipc_Server *_e_ipc_server = NULL;
int E_RESPONSE_MODULE_LIST = 0;
//int E_RESPONSE_MODULE_DIRS_LIST = 0;
int E_RESPONSE_MODULE_DIRS_LIST = 0;
int E_RESPONSE_BACKGROUND_GET = 0;
//int E_RESPONSE_BACKGROUND_DIRS_LIST = 0;
//int E_RESPONSE_THEME_DIRS_LIST = 0;
int E_RESPONSE_BACKGROUND_DIRS_LIST = 0;
int E_RESPONSE_THEME_DIRS_LIST = 0;
/*
* initialise connection to the current E running on "display".
@ -140,10 +140,10 @@ e_init(const char* display)
if (!E_RESPONSE_MODULE_LIST)
{
E_RESPONSE_MODULE_LIST = ecore_event_type_new();
// E_RESPONSE_MODULE_DIRS_LIST = ecore_event_type_new();
E_RESPONSE_MODULE_DIRS_LIST = ecore_event_type_new();
E_RESPONSE_BACKGROUND_GET = ecore_event_type_new();
// E_RESPONSE_BACKGROUND_DIRS_LIST = ecore_event_type_new();
// E_RESPONSE_THEME_DIRS_LIST = ecore_event_type_new();
E_RESPONSE_BACKGROUND_DIRS_LIST = ecore_event_type_new();
E_RESPONSE_THEME_DIRS_LIST = ecore_event_type_new();
}
if (free_disp)
@ -211,9 +211,8 @@ e_module_list(void)
void
e_module_dirs_list(void)
{
// ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
// E_IPC_OP_MODULE_DIRS_LIST, 0/*ref*/, 0/*ref_to*/,
// 0/*response*/, NULL, 0);
char *type = "modules";
_e_ipc_call(E_IPC_OP_DIRS_LIST, &type);
}
void
@ -234,21 +233,17 @@ e_background_get(void)
void
e_background_dirs_list(void)
{
// ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
// E_IPC_OP_BG_DIRS_LIST, 0/*ref*/,
// 0/*ref_to*/, 0/*response*/, NULL, 0);
char *type = "backgrounds";
_e_ipc_call(E_IPC_OP_DIRS_LIST, &type);
}
void
e_theme_dirs_list(void)
{
// ecore_ipc_server_send(_e_ipc_server, E_IPC_DOMAIN_REQUEST,
// E_IPC_OP_THEME_DIRS_LIST, 0/*ref*/,
// 0/*ref_to*/, 0/*response*/, NULL, 0);
char *type = "themes";
_e_ipc_call(E_IPC_OP_DIRS_LIST, &type);
}
//static int reply_count = 0;
static int
_e_ipc_init(const char *display)
{
@ -330,117 +325,6 @@ _e_cb_server_data(void *data __UNUSED__, int type, void *event)
default:
break;
}
/*
Ecore_Ipc_Event_Server_Data *e;
e = event;
type = E_IPC_OP_MODULE_LIST;
switch (e->minor)
{
case E_IPC_OP_MODULE_DIRS_LIST_REPLY:
if (e->data)
{
E_Response_Module_Dirs_List *res;
int count = 0;
char *p;
res = calloc(1, sizeof(E_Response_Module_Dirs_List));
p = e->data;
while (p < (char *)(e->data + e->size))
{
p += strlen(p) + 1;
count ++;
}
res->dirs = malloc(sizeof(char *) * count);
res->count = count;
count = 0;
p = e->data;
while (p < (char *)(e->data + e->size))
{
res->dirs[count] = p;
p += strlen(res->dirs[count]) + 1;
count++;
}
ecore_event_add(E_RESPONSE_MODULE_DIRS_LIST, res,
_e_cb_module_dir_list_free, NULL);
}
break;
case E_IPC_OP_BG_DIRS_LIST_REPLY:
if (e->data)
{
E_Response_Background_Dirs_List *res;
char *p;
int count = 0;
res = calloc(1, sizeof(E_Response_Background_Dirs_List));
p = e->data;
while (p < (char *)(e->data + e->size))
{
p += strlen(p) + 1;
count ++;
}
res->dirs = malloc(sizeof(char *) * count);
res->count = count;
count = 0;
p = e->data;
while (p < (char *)(e->data + e->size))
{
res->dirs[count] = p;
p += strlen(res->dirs[count]) + 1;
count++;
}
ecore_event_add(E_RESPONSE_BACKGROUND_DIRS_LIST, res,
_e_cb_bg_dir_list_free, NULL);
}
break;
case E_IPC_OP_THEME_DIRS_LIST_REPLY:
if (e->data)
{
E_Response_Theme_Dirs_List *res;
char *p;
int count = 0;
res = calloc(1, sizeof(E_Response_Theme_Dirs_List));
p = e->data;
while (p < (char *)(e->data + e->size))
{
p += strlen(p) + 1;
count ++;
}
res->dirs = malloc(sizeof(char *) * count);
res->count = count;
count = 0;
p = e->data;
while (p < (char *)(e->data + e->size))
{
res->dirs[count] = p;
p += strlen(res->dirs[count]) + 1;
count++;
}
ecore_event_add(E_RESPONSE_THEME_DIRS_LIST, res,
_e_cb_theme_dir_list_free, NULL);
}
break;
default:
break;
}
return 1;*/
}
static void _e_cb_module_list_free(void *data __UNUSED__, void *ev)
@ -458,29 +342,9 @@ static void _e_cb_module_list_free(void *data __UNUSED__, void *ev)
}
static void
_e_cb_module_dir_list_free(void *data __UNUSED__, void *ev)
_e_cb_dir_list_free(void *data __UNUSED__, void *ev)
{
E_Response_Module_Dirs_List *e;
e = ev;
free(e->dirs);
free(e);
}
static void
_e_cb_bg_dir_list_free(void *data __UNUSED__, void *ev)
{
E_Response_Background_Dirs_List *e;
e = ev;
free(e->dirs);
free(e);
}
static void
_e_cb_theme_dir_list_free(void *data __UNUSED__, void *ev)
{
E_Response_Theme_Dirs_List *e;
E_Response_Dirs_List *e;
e = ev;
free(e->dirs);