Enlightenment CVS committal Author : lordchaos Project : e17 Module : apps/evfs
Dir : e17/apps/evfs/src/common Modified Files: evfs_io.c Log Message: * Another big change: start migrating the awful UI stuff to yummy eet. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/evfs/src/common/evfs_io.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- evfs_io.c 5 Nov 2005 07:45:13 -0000 1.24 +++ evfs_io.c 9 Nov 2005 09:56:34 -0000 1.25 @@ -1,8 +1,36 @@ #include <evfs.h> +#include <Eet.h> +#include <Evas.h> + + + +static io_init=0; +Eet_Data_Descriptor *_evfs_filereference_edd; + + +int evfs_io_initialise() { + if (io_init) return 1; + + + _evfs_filereference_edd = eet_data_descriptor_new("evfs_filereference", sizeof(evfs_filereference), + evas_list_next, + evas_list_append, + evas_list_data, + evas_list_free, + evas_hash_foreach, + evas_hash_add, + evas_hash_free); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_filereference_edd, evfs_filereference, "file_type", file_type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_filereference_edd, evfs_filereference, "path",path, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_evfs_filereference_edd, evfs_filereference, "plugin_uri",plugin_uri, EET_T_STRING); + + + return 0; + +} -static pthread_mutex_t ipc_client_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t ipc_server_mutex = PTHREAD_MUTEX_INITIALIZER; ecore_ipc_message* ecore_ipc_message_new(int major, int minor, int ref, int ref_to, int response, void* data, int len) { @@ -52,16 +80,23 @@ void evfs_write_list_event (evfs_client* client, evfs_event* event) { evfs_filereference* ref; - char block[1024]; /*Maybe too small, make this dynamic*/ + char* data; + int size_ret; + //char block[1024]; /*Maybe too small, make this dynamic*/ ecore_list_goto_first(event->file_list.list); while ( (ref = ecore_list_next(event->file_list.list)) ) { - memcpy(block, &ref->file_type, sizeof(evfs_file_type)); - memcpy(block+sizeof(evfs_file_type), ref->path, strlen(ref->path)+1); + /*memcpy(block, &ref->file_type, sizeof(evfs_file_type)); + memcpy(block+sizeof(evfs_file_type), ref->path, strlen(ref->path)+1);*/ + + data =eet_data_descriptor_encode(_evfs_filereference_edd, ref, &size_ret); /*printf ("Writing filename '%s' with filetype %d\n", ref->path, ref->file_type);*/ - evfs_write_ecore_ipc_client_message(client->client, ecore_ipc_message_new(EVFS_EV_REPLY,EVFS_EV_PART_FILE_REFERENCE,client->id,0,0,block, (strlen(ref->path) * sizeof(char)) + sizeof(evfs_file_type) +1 )); + evfs_write_ecore_ipc_client_message(client->client, ecore_ipc_message_new(EVFS_EV_REPLY,EVFS_EV_PART_FILE_REFERENCE,client->id,0,0,data, size_ret )); + + + free(data); } } @@ -118,18 +153,15 @@ break; case EVFS_EV_PART_FILE_REFERENCE: { - evfs_filereference* ref = NEW(evfs_filereference); + evfs_filereference* ref; if (!event->file_list.list) { event->file_list.list = ecore_list_new(); //printf("Created new ecore list at %p\n", event->file_list.list); } - - memcpy(&ref->file_type, msg->data, sizeof(evfs_file_type)); - ref->path = malloc(sizeof(char) * msg->len); - memcpy(ref->path, (msg->data)+sizeof(evfs_file_type), msg->len); - //printf("(%s) Received file type for file: %d\n", ref->path, ref->file_type); + ref = eet_data_descriptor_decode(_evfs_filereference_edd, msg->data, msg->len); + ecore_list_append(event->file_list.list, ref); } break; @@ -160,22 +192,15 @@ /*Writers*/ void evfs_write_ecore_ipc_server_message(Ecore_Ipc_Server* server, ecore_ipc_message* msg) { - LOCK(&ipc_client_mutex); - ecore_ipc_server_send(server, msg->major, msg->minor, msg->ref, msg->ref_to, msg->response,msg->data, msg->len); free(msg); - UNLOCK(&ipc_client_mutex); } void evfs_write_ecore_ipc_client_message(Ecore_Ipc_Client* client, ecore_ipc_message* msg) { - LOCK(&ipc_server_mutex); - ecore_ipc_client_send(client, msg->major, msg->minor, msg->ref, msg->ref_to, msg->response,msg->data, msg->len); free(msg); - - UNLOCK(&ipc_server_mutex); } ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs