Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_ipc_handlers.h 


Log Message:
- the RESPONSE macro dosen't use HDL, so remove it
- remove reply_count from the macros as this is an e_remote thing and isn't used
  by the other types. e_remote seems to still be working, but some may want
  to check that
- add E_Lib code in for key/mouse bindings. I've tested the list calls, add/del 
are
  untested at the moment.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers.h,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -3 -r1.62 -r1.63
--- e_ipc_handlers.h    8 Aug 2005 13:49:27 -0000       1.62
+++ e_ipc_handlers.h    10 Aug 2005 04:52:07 -0000      1.63
@@ -145,7 +145,7 @@
 /**
  * Get event data for libe processing
  */
-# define RESPONSE(__res, __store, HDL) \
+# define RESPONSE(__res, __store) \
    __store *__res = calloc(1, sizeof(__store)); \
    if (e->data) {
 #define END_RESPONSE(__res, __type) \
@@ -273,7 +273,6 @@
        } \
        evas_list_free(dat); \
     } \
-    reply_count++; \
  } \
    break;
 
@@ -304,21 +303,30 @@
  * Use END_INT3_STRING3_LIST to terminate the loop and free all data. 
  */
 #define INT3_STRING3_LIST(__v, HDL) \
+   INT3_STRING3_LIST_START(__v, HDL) \
+   INT3_STRING3_LIST_ITERATE(__v)
+
+#define INT3_STRING3_LIST_START(__v, HDL) \
  case HDL: { \
     Evas_List *dat = NULL, *l; \
-    if (e_ipc_codec_3int_3str_list_dec(e->data, e->size, &dat)) { \
+    if (e_ipc_codec_3int_3str_list_dec(e->data, e->size, &dat)) {
+#define INT3_STRING3_LIST_ITERATE(__v) \
        for (l = dat; l; l = l->next) { \
          E_Ipc_3Int_3Str *__v; \
          __v = l->data;
 #define END_INT3_STRING3_LIST(__v) \
+   END_INT3_STRING3_LIST_ITERATE(__v) \
+   END_INT3_STRING3_LIST_START()
+
+#define END_INT3_STRING3_LIST_ITERATE(__v) \
           free(__v->str1); \
           free(__v->str2); \
           free(__v->str3); \
           free(__v); \
-       } \
+       } 
+#define END_INT3_STRING3_LIST_START() \
        evas_list_free(dat); \
     } \
-    reply_count++; \
  } \
   break;
 
@@ -358,20 +366,29 @@
  * Use END_INT4_STRING2_LIST to terminate the loop and free all data. 
  */
 #define INT4_STRING2_LIST(__v, HDL) \
+   INT4_STRING2_LIST_START(__v, HDL) \
+   INT4_STRING2_LIST_ITERATE(__v)
+
+#define INT4_STRING2_LIST_START(__v, HDL) \
  case HDL: { \
     Evas_List *dat = NULL, *l; \
-    if (e_ipc_codec_4int_2str_list_dec(e->data, e->size, &dat)) { \
+    if (e_ipc_codec_4int_2str_list_dec(e->data, e->size, &dat)) { 
+#define INT4_STRING2_LIST_ITERATE(__v) \
        for (l = dat; l; l = l->next) { \
          E_Ipc_4Int_2Str *__v; \
          __v = l->data;
 #define END_INT4_STRING2_LIST(__v) \
+   END_INT4_STRING2_LIST_ITERATE(__v) \
+   END_INT4_STRING2_LIST_START()
+
+#define END_INT4_STRING2_LIST_ITERATE(__v) \
           free(__v->str1); \
           free(__v->str2); \
           free(__v); \
        } \
-       evas_list_free(dat); \
+       evas_list_free(dat);
+#define END_INT4_STRING2_LIST_START() \
     } \
-    reply_count++; \
  } \
   break;
 
@@ -424,7 +441,6 @@
        } \
        evas_list_free(dat); \
     } \
-    reply_count++; \
  } \
    break;
 
@@ -477,7 +493,6 @@
        } \
        evas_list_free(dat); \
     } \
-    reply_count++; \
  } \
    break;
 
@@ -732,7 +747,7 @@
    DECODE(e_ipc_codec_str_int_list_dec) {
       LIST();
       int count;
-      RESPONSE(r, E_Response_Module_List, HDL);
+      RESPONSE(r, E_Response_Module_List);
 
       /* FIXME - this is a mess, needs to be merged into macros... */
       count = evas_list_count(dat);
@@ -798,7 +813,7 @@
    END_STRING(s);
 #elif (TYPE == E_LIB_IN)
    STRING(s, HDL);
-   RESPONSE(r, E_Response_Background_Get, HDL);
+   RESPONSE(r, E_Response_Background_Get);
    r->file = strdup(s);
    END_RESPONSE(r, E_RESPONSE_BACKGROUND_GET);
    END_STRING(s);
@@ -1176,7 +1191,7 @@
    END_STRING(s);
 #elif (TYPE == E_LIB_IN)
    STRING(s, HDL);
-   RESPONSE(r, E_Response_Language_Get, HDL);
+   RESPONSE(r, E_Response_Language_Get);
    r->lang = strdup(s);
    END_RESPONSE(r, E_RESPONSE_LANGUAGE_GET);
    END_STRING(s);
@@ -1253,7 +1268,7 @@
       int count;
       char *type;
       int res;
-      RESPONSE(r, E_Response_Dirs_List, HDL);
+      RESPONSE(r, E_Response_Dirs_List);
 
       /* FIXME - this is a mess, needs to be merged into macros... */
       count = evas_list_count(dat);
@@ -1991,7 +2006,6 @@
    v->val3 = emb->button;
    v->val4 = emb->any_mod;
    END_SEND_INT4_STRING2_LIST(v, E_IPC_OP_BINDING_MOUSE_LIST_REPLY);
-#elif (TYPE == E_REMOTE_IN)
 #endif
 #undef HDL
 
@@ -2053,6 +2067,36 @@
         );
    }
    END_INT4_STRING2_LIST(v);
+#elif E_LIB_IN
+   INT4_STRING2_LIST_START(v, HDL);
+   {
+      int count;
+      RESPONSE(r, E_Response_Binding_Mouse_List);
+      count = evas_list_count(dat);
+      r->bindings = malloc(sizeof(E_Response_Binding_Mouse_Data *) * count);
+      r->count = count;
+
+      count = 0;
+      INT4_STRING2_LIST_ITERATE(v);
+      {
+        E_Response_Binding_Mouse_Data *d;
+
+        d = malloc(sizeof(E_Response_Binding_Mouse_Data));
+        d->ctx = v->val1;
+        d->button = v->val3;
+        d->mod = v->val2;
+        d->any_mod = v->val4;
+        d->action = ((v->str1) ? strdup(v->str1) : NULL);
+        d->params = ((v->str2) ? strdup(v->str2) : NULL);
+
+        r->bindings[count] = d;
+        count++;
+      }
+      END_INT4_STRING2_LIST_ITERATE(v);
+      /* this will leak, need to free the event data */
+      END_RESPONSE(r, E_RESPONSE_BINDING_MOUSE_LIST);
+   }
+   END_INT4_STRING2_LIST_START();
 #endif
 #undef HDL
 
@@ -2344,6 +2388,36 @@
         );
    }
    END_INT3_STRING3_LIST(v);
+#elif E_LIB_IN
+   INT3_STRING3_LIST_START(v, HDL);
+   {
+      int count = 0;
+      RESPONSE(r, E_Response_Binding_Key_List);
+      count = evas_list_count(dat);
+      r->bindings = malloc(sizeof(E_Response_Binding_Key_Data *) * count);
+      r->count = count;
+
+      count = 0;
+      INT3_STRING3_LIST_ITERATE(v);
+      {
+        E_Response_Binding_Key_Data *d;
+
+        d = malloc(sizeof(E_Response_Binding_Key_Data));
+        d->ctx = v->val1;
+        d->key = ((v->str1) ? strdup(v->str1) : NULL);
+        d->mod = v->val2;
+        d->any_mod = v->val3;
+        d->action = ((v->str2) ? strdup(v->str2) : NULL);
+        d->params = ((v->str3) ? strdup(v->str3) : NULL);
+
+        r->bindings[count] = d;
+        count++;
+      }
+      END_INT3_STRING3_LIST_ITERATE(v);
+      /* this will leak, need to free the event data */
+      END_RESPONSE(r, E_RESPONSE_BINDING_KEY_LIST);
+   }
+   END_INT3_STRING3_LIST_START();
 #endif
 #undef HDL
 
@@ -4217,7 +4291,7 @@
    END_STRING2(e_2str);
 #elif (TYPE == E_LIB_IN)
    STRING2(category, file, e_2str, HDL);
-   RESPONSE(r, E_Response_Theme_Get, HDL);
+   RESPONSE(r, E_Response_Theme_Get);
    r->file = strdup(file);
    r->category = strdup(category);
    END_RESPONSE(r, E_RESPONSE_THEME_GET);




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to