From 1e6c395c55f49864d5d8bfaf13b6325ac84fdbaa Mon Sep 17 00:00:00 2001 From: handyande Date: Fri, 3 Jun 2005 17:43:48 +0000 Subject: [PATCH] Port the dirs_list IPC to libe - now up to the functionality it was before IPC changes SVN revision: 15093 --- src/bin/e_ipc_handlers.h | 46 +++++++++++ src/lib/E.h | 18 +---- src/lib/e_main.c | 164 ++++----------------------------------- 3 files changed, 62 insertions(+), 166 deletions(-) diff --git a/src/bin/e_ipc_handlers.h b/src/bin/e_ipc_handlers.h index c1998c664..2724907d1 100644 --- a/src/bin/e_ipc_handlers.h +++ b/src/bin/e_ipc_handlers.h @@ -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 diff --git a/src/lib/E.h b/src/lib/E.h index 2b02d1e3a..2c8406346 100644 --- a/src/lib/E.h +++ b/src/lib/E.h @@ -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; diff --git a/src/lib/e_main.c b/src/lib/e_main.c index c7fee4660..0d9e6ed9b 100644 --- a/src/lib/e_main.c +++ b/src/lib/e_main.c @@ -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);