probably last patch for today...

Cheers,
--
Morten
:wq
Index: ecore_ipc.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_ipc/ecore_ipc.c,v
retrieving revision 1.23
diff -u -r1.23 ecore_ipc.c
--- ecore_ipc.c 23 Sep 2005 06:28:05 -0000      1.23
+++ ecore_ipc.c 2 Jan 2006 04:26:50 -0000
@@ -228,9 +228,12 @@
 int ECORE_IPC_EVENT_SERVER_DATA = 0;
 
 static int                  init_count = 0;
-static Ecore_Ipc_Server    *servers = NULL;
+static Ecore_List          *servers = NULL;
 static Ecore_Event_Handler *handler[6];
 
+static void *_ecore_ipc_server_del(void *data);
+static void *_ecore_ipc_client_del(void *data);
+
 /**
  * @defgroup Ecore_IPC_Library_Group IPC Library Functions
  *
@@ -271,6 +274,10 @@
                                          _ecore_ipc_event_client_data, NULL);
    handler[i++] = ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA,
                                          _ecore_ipc_event_server_data, NULL);
+
+   servers = ecore_list_new();
+   ecore_list_set_free_cb(servers, ECORE_FREE_CB(_ecore_ipc_server_del));
+
    return init_count;   
 }
 
@@ -287,7 +294,7 @@
 
    if (--init_count != 0) return init_count;
 
-   while (servers) ecore_ipc_server_del(servers);
+   ecore_list_destroy(servers);
 
    for (i = 0; i < 6; i++)
      ecore_event_handler_del(handler[i]);
@@ -350,7 +357,7 @@
        return NULL;
      }
    svr->data = (void *)data;
-   servers = _ecore_list2_append(servers, svr);
+   ecore_list_append(servers, (void *)svr);
    ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
    return svr;
 }
@@ -405,7 +412,7 @@
        return NULL;
      }
    svr->data = (void *)data;
-   servers = _ecore_list2_append(servers, svr);
+   ecore_list_append(servers, (void *)svr);
    ECORE_MAGIC_SET(svr, ECORE_MAGIC_IPC_SERVER);
    return svr;
 }
@@ -419,7 +426,15 @@
 void *
 ecore_ipc_server_del(Ecore_Ipc_Server *svr)
 {
-   void *data;
+   ecore_list_goto(servers, (void *)svr);
+   return _ecore_ipc_server_del(ecore_list_remove(servers));
+}
+
+static void *
+_ecore_ipc_server_del(void *data)
+{
+   Ecore_Ipc_Server *svr;
+   svr = (Ecore_Ipc_Server *)data;
 
    if (!ECORE_MAGIC_CHECK(svr, ECORE_MAGIC_IPC_SERVER))
      {
@@ -429,9 +444,10 @@
      }
    ECORE_MAGIC_SET(svr, ECORE_MAGIC_NONE);
    data = svr->data;
-   while (svr->clients) ecore_ipc_client_del((Ecore_Ipc_Client *)svr->clients);
+   ecore_list_destroy(svr->clients);
+
    ecore_con_server_del(svr->server);
-   servers = _ecore_list2_remove(servers, svr);
+
    if (svr->buf) free(svr->buf);
    free(svr);
    return data;
@@ -724,8 +740,17 @@
 void *
 ecore_ipc_client_del(Ecore_Ipc_Client *cl)
 {
-   void *data;
+   return _ecore_ipc_client_del((void *)cl);
+}
+
+static void *
+_ecore_ipc_client_del(void *data)
+{
+   Ecore_Ipc_Client *cl;
    Ecore_Ipc_Server *svr;
+
+   cl = (Ecore_Ipc_Client *)data;
+   data = cl->data;
    
    if (!ECORE_MAGIC_CHECK(cl, ECORE_MAGIC_IPC_CLIENT))
      {
@@ -733,11 +758,12 @@
                         "ecore_ipc_client_del");
        return NULL;
      }
+
    ECORE_MAGIC_SET(cl, ECORE_MAGIC_NONE);
-   data = cl->data;
    svr = ecore_con_server_data_get(ecore_con_client_server_get(cl->client));
    ecore_con_client_del(cl->client);
-   svr->clients = _ecore_list2_remove(svr->clients, cl);
+   ecore_list_goto(svr->clients, (void *)cl);
+   ecore_list_remove(svr->clients);
    if (cl->buf) free(cl->buf);
    free(cl);
    return data;
@@ -796,8 +822,8 @@
 {
    Ecore_Con_Event_Client_Add *e;
    
-   e = ev;
-   if (!_ecore_list2_find(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   e = (Ecore_Con_Event_Client_Add *)ev;
+   if (!ecore_list_goto(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
    /* handling code here */
      {
        Ecore_Ipc_Client *cl;
@@ -809,7 +835,12 @@
        ECORE_MAGIC_SET(cl, ECORE_MAGIC_IPC_CLIENT);
        cl->client = e->client;
        ecore_con_client_data_set(cl->client, (void *)cl);
-       svr->clients = _ecore_list2_append(svr->clients, cl);
+       if (!svr->clients)
+          {
+            svr->clients = ecore_list_new();
+            ecore_list_set_free_cb(svr->clients, 
ECORE_FREE_CB(_ecore_ipc_client_del));
+          }
+       ecore_list_append(svr->clients, (void *)cl);
          {
             Ecore_Ipc_Event_Client_Add *e2;
             
@@ -829,8 +860,8 @@
 {
    Ecore_Con_Event_Client_Del *e;
    
-   e = ev;
-   if (!_ecore_list2_find(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   e = (Ecore_Con_Event_Client_Del *)ev;
+   if (!ecore_list_goto(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
    /* handling code here */
      {
        Ecore_Ipc_Client *cl;
@@ -855,8 +886,8 @@
 {
    Ecore_Con_Event_Server_Add *e;
    
-   e = ev;
-   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) 
return 1;
+   e = (Ecore_Con_Event_Server_Add *)ev;
+   if (!ecore_list_goto(servers, ecore_con_server_data_get(e->server))) return 
1;
    /* handling code here */
      {
        Ecore_Ipc_Server *svr;
@@ -881,8 +912,8 @@
 {
    Ecore_Con_Event_Server_Del *e;
    
-   e = ev;
-   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) 
return 1;
+   e = (Ecore_Con_Event_Server_Del *)ev;
+   if (!ecore_list_goto(servers, ecore_con_server_data_get(e->server))) return 
1;
    /* handling code here */
      {
        Ecore_Ipc_Server *svr;
@@ -948,8 +979,8 @@
 {
    Ecore_Con_Event_Client_Data *e;
 
-   e = ev;
-   if (!_ecore_list2_find(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
+   e = (Ecore_Con_Event_Client_Data *)ev;
+   if (!ecore_list_goto(servers, 
ecore_con_server_data_get(ecore_con_client_server_get(e->client)))) return 1;
    /* handling code here */
      {
        Ecore_Ipc_Client *cl;
@@ -1121,8 +1152,8 @@
 {
    Ecore_Con_Event_Server_Data *e;
 
-   e = ev;
-   if (!_ecore_list2_find(servers, ecore_con_server_data_get(e->server))) 
return 1;
+   e = (Ecore_Con_Event_Server_Data *)ev;
+   if (!ecore_list_goto(servers, ecore_con_server_data_get(e->server))) return 
1;
    /* handling code here */
      {
        Ecore_Ipc_Server *svr;
Index: ecore_ipc_private.h
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_ipc/ecore_ipc_private.h,v
retrieving revision 1.7
diff -u -r1.7 ecore_ipc_private.h
--- ecore_ipc_private.h 23 Sep 2005 06:28:05 -0000      1.7
+++ ecore_ipc_private.h 2 Jan 2006 04:26:50 -0000
@@ -37,7 +37,6 @@
 
 struct _Ecore_Ipc_Client
 {
-   Ecore_List        __list_data;
    ECORE_MAGIC;
    Ecore_Con_Client  *client;
    void              *data;
@@ -51,13 +50,12 @@
    
 struct _Ecore_Ipc_Server
 {
-   Ecore_List        __list_data;
    ECORE_MAGIC;
    Ecore_Con_Server *server;
-   Ecore_Ipc_Client *clients;
-   void              *data;
-   unsigned char     *buf;
-   int                buf_size;
+   Ecore_List       *clients;
+   void             *data;
+   unsigned char    *buf;
+   int               buf_size;
 
    struct {
       Ecore_Ipc_Msg_Head i, o;

Reply via email to