edje: migrate Eo API to use Eo callback instead of opaque type.
authorCedric BAIL <cedric.bail@free.fr>
Wed, 6 Feb 2019 18:48:43 +0000 (13:48 -0500)
committerJongmin Lee <jm105.lee@samsung.com>
Wed, 6 Feb 2019 22:20:24 +0000 (07:20 +0900)
Summary: Depends on D7869

Reviewers: zmike, q66, segfaultxavi, bu5hm4n

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7671

Differential Revision: https://phab.enlightenment.org/D7870

19 files changed:
src/lib/edje/edje_legacy.c
src/lib/edje/edje_match.c
src/lib/edje/edje_private.h
src/lib/edje/edje_program.c
src/lib/edje/edje_signal.c
src/lib/edje/efl_layout_signal.eo
src/lib/elementary/efl_ui_check.c
src/lib/elementary/efl_ui_grid.c
src/lib/elementary/efl_ui_image_zoomable.c
src/lib/elementary/efl_ui_layout.c
src/lib/elementary/efl_ui_list.c
src/lib/elementary/efl_ui_list_view.c
src/lib/elementary/efl_ui_nstate.c
src/lib/elementary/efl_ui_scroller.c
src/lib/elementary/efl_ui_slider.c
src/lib/elementary/efl_ui_tab_bar.c
src/lib/elementary/efl_ui_text.c
src/lib/elementary/elm_entry.c
src/tests/emotion/emotion_test_main-eo.c

index e96e470..fead8b0 100644 (file)
@@ -81,7 +81,7 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch
 
    ed = _edje_fetch(obj);
    if (!ed || ed->delete_me) return;
-   _edje_object_signal_callback_add(ed, emission, source, func, data);
+   _edje_object_signal_callback_add(ed, emission, source, func, NULL, NULL, data);
 }
 
 EAPI void *
@@ -99,7 +99,8 @@ edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, con
    emission = eina_stringshare_add(emission);
    source = eina_stringshare_add(source);
 
-   ok = _edje_signal_callback_disable(gp, emission, source, func, data);
+   // We can cast here as the function won't be used and is just going to be used for comparison
+   ok = _edje_signal_callback_disable(gp, emission, source, func, NULL, NULL, data);
 
    // Legacy only
    if (!ok && !data)
@@ -108,7 +109,8 @@ edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, con
           {
              if (emission == gp->matches->matches[i].signal &&
                  source == gp->matches->matches[i].source &&
-                 func == gp->matches->matches[i].func &&
+                 func == gp->matches->matches[i].legacy &&
+                 gp->flags[i].legacy &&
                  !gp->flags[i].delete_me)
                {
                   gp->flags[i].delete_me = EINA_TRUE;
index 57e319b..7f4065a 100644 (file)
@@ -553,7 +553,10 @@ edje_match_callback_exec_check_finals(const Edje_Signals_Sources_Patterns *ssp,
 
         if (ed->callbacks->flags[idx].delete_me) continue;
 
-        cb->func((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source);
+        if (ed->callbacks->flags[idx].legacy)
+          cb->legacy((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source);
+        else
+          cb->eo((void *)ed->callbacks->custom_data[idx], ed->obj, sig, source);
         if (_edje_block_break(ed))
           {
              r = 0;
index e7046b3..1f58735 100644 (file)
@@ -1089,12 +1089,16 @@ struct _Edje_Signal_Callback_Match
 {
    const char     *signal;
    const char     *source;
-   Edje_Signal_Cb  func;
+   union {
+      Edje_Signal_Cb  legacy;
+      EflLayoutSignalCb eo;
+   };
 };
 
 struct _Edje_Signal_Callback_Matches
 {
    Edje_Signal_Callback_Match *matches;
+   Eina_Free_Cb *free_cb;
 
    Edje_Signals_Sources_Patterns *patterns;
 
@@ -1106,6 +1110,7 @@ struct _Edje_Signal_Callback_Matches
 
 struct _Edje_Signal_Callback_Flags
 {
+   Eina_Bool legacy:1;
    Eina_Bool delete_me:1;
    Eina_Bool just_added:1;
    Eina_Bool propagate:1;
@@ -2582,8 +2587,9 @@ const Eina_Inarray *edje_match_signal_source_hash_get(const char *signal,
                                                      const char *source,
                                                      const Eina_Rbtree *tree);
 void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data);
-void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m);
-Eina_Bool _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data);
+Eina_Bool _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source,
+                                           Edje_Signal_Cb func_legacy,
+                                           Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb, void *data);
 
 // FIXME remove below 3 eapi decls when edje_convert goes
 EAPI void _edje_edd_init(void);
@@ -2711,14 +2717,19 @@ void  _edje_callbacks_del(Evas_Object *obj, Edje *ed);
 void  _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed);
 
 const Edje_Signal_Callback_Group *_edje_signal_callback_alloc(void);
+void _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m, Edje_Signal_Callback_Flags *flags, void **custom_data);
 void _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp);
 Eina_Bool _edje_signal_callback_push(Edje_Signal_Callback_Group *cgp,
                                      const char *signal, const char *source,
-                                     Edje_Signal_Cb func, void *data,
+                                     Edje_Signal_Cb func_legacy,
+                                     Efl_Signal_Cb func_eo,
+                                     Eina_Free_Cb func_free_cb,
+                                     void *data,
                                      Eina_Bool propagate);
 Eina_Bool _edje_signal_callback_disable(Edje_Signal_Callback_Group *cgp,
                                         const char *signal, const char *source,
-                                        Edje_Signal_Cb func, void *data);
+                                        Edje_Signal_Cb func_legacy,
+                                        EflLayoutSignalCb func, Eina_Free_Cb func_free_cb, void *data);
 
 EAPI void _edje_edd_init(void);
 EAPI void _edje_edd_shutdown(void);
index 46d197b..387c031 100644 (file)
@@ -237,7 +237,9 @@ edje_transition_duration_factor_set(double scale)
 }
 
 Eina_Bool
-_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+_edje_object_signal_callback_add(Edje *ed, const char *emission, const char *source,
+                                 Edje_Signal_Cb func_legacy,
+                                 Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb, void *data)
 {
    Edje_Signal_Callback_Group *gp;
    const char *sig;
@@ -252,7 +254,7 @@ _edje_object_signal_callback_add(Edje *ed, const char *emission, const char *sou
    src = eina_stringshare_add(source);
 
    gp = (Edje_Signal_Callback_Group *) ed->callbacks;
-   ok = _edje_signal_callback_push(gp, sig, src, func, data, EINA_TRUE);
+   ok = _edje_signal_callback_push(gp, sig, src, func_legacy, func_eo, func_free_cb, data, EINA_TRUE);
 
    eina_stringshare_del(sig);
    eina_stringshare_del(src);
@@ -267,17 +269,17 @@ edje_object_propagate_callback_add(Evas_Object *obj, Efl_Signal_Cb func, void *d
 
    ed = _edje_fetch(obj);
    if (!ed || ed->delete_me) return;
-   _edje_object_signal_callback_add(ed, "*", "*", func, data);
+   _edje_object_signal_callback_add(ed, "*", "*", func, NULL, NULL, data);
 }
 
-EOLIAN Eina_Bool
-_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+Eina_Bool
+_efl_canvas_layout_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
-   return _edje_object_signal_callback_add(ed, emission, source, func, data);
+   return _edje_object_signal_callback_add(ed, emission, source, NULL, func, func_free_cb, func_data);
 }
 
-EOLIAN Eina_Bool
-_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+Eina_Bool
+_efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Edje *ed, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Edje_Signal_Callback_Group *gp;
    Eina_Bool ok;
@@ -291,7 +293,7 @@ _efl_canvas_layout_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Ed
    emission = eina_stringshare_add(emission);
    source = eina_stringshare_add(source);
 
-   ok = _edje_signal_callback_disable(gp, emission, source, func, data);
+   ok = _edje_signal_callback_disable(gp, emission, source, NULL, func, func_free_cb, func_data);
 
    eina_stringshare_del(emission);
    eina_stringshare_del(source);
@@ -1776,13 +1778,16 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Da
 
                   cb = &m->matches[*i];
 
-                  cb->func((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
+                  if (ed->callbacks->flags[*i].legacy)
+                    cb->legacy((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
+                  else
+                    cb->eo((void *)ed->callbacks->custom_data[*i], ed->obj, sig, src);
                   if (_edje_block_break(ed)) break;
                }
           }
 
 break_prog:
-        _edje_signal_callback_matches_unref(m);
+        _edje_signal_callback_matches_unref(m, ed->callbacks->flags, ed->callbacks->custom_data);
 
         _edje_signal_callback_patterns_unref(ssp);
      }
index 2f4bab3..e13ec1b 100644 (file)
@@ -22,7 +22,13 @@ _edje_signal_match_key_cmp(const void *key1, int key1_length EINA_UNUSED, const
      {
         if (a->matches[i].signal != b->matches[i].signal) return a->matches[i].signal - b->matches[i].signal;
         if (a->matches[i].source != b->matches[i].source) return a->matches[i].source - b->matches[i].source;
-        if (a->matches[i].func != b->matches[i].func) return (unsigned char *)a->matches[i].func - (unsigned char *)b->matches[i].func;
+        // Callback be it legacy or eo, have the same pointer size and so can be just compared like that
+        if (a->matches[i].legacy != b->matches[i].legacy) return (unsigned char *)a->matches[i].legacy - (unsigned char *)b->matches[i].legacy;
+        if (a->free_cb && b->free_cb &&
+            a->free_cb[i] != b->free_cb[i]) return (unsigned char *)a->free_cb[i] - (unsigned char *)b->free_cb[i];
+        if ((!a->free_cb && b->free_cb) ||
+            (a->free_cb && !b->free_cb))
+          return a->free_cb - b->free_cb;
      }
    return 0;
 }
@@ -39,11 +45,16 @@ _edje_signal_match_key_hash(const void *key, int key_length EINA_UNUSED)
 #ifdef EFL64
         hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].signal, sizeof (char *));
         hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].source, sizeof (char *));
-        hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].func, sizeof (Edje_Signal_Cb));
+        hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].legacy, sizeof (Edje_Signal_Cb));
+        if (a->free_cb)
+          hash ^= eina_hash_int64((const unsigned long long int *)&a->free_cb[i], sizeof (Eina_Free_Cb));
 #else
         hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].signal, sizeof (char *));
         hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].source, sizeof (char *));
-        hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].func, sizeof (Edje_Signal_Cb));
+        // Callback be it legacy or eo, have the same pointer size and so using legacy for hash is enough
+        hash ^= eina_hash_int32((const unsigned int *)&a->matches[i].legacy, sizeof (Edje_Signal_Cb));
+        if (a->free_cb)
+          hash ^= eina_hash_int32((const unsigned int *)&a->free_cb[i], sizeof (Eina_Free_Cb));
 #endif
      }
    return hash;
@@ -64,11 +75,17 @@ _edje_signal_callback_matches_dup(const Edje_Signal_Callback_Matches *src)
    result->patterns = NULL;
    EINA_REFCOUNT_REF(result);
 
+   if (src->free_cb)
+     {
+        result->free_cb = malloc(sizeof (Eina_Free_Cb) * src->matches_count);
+        if (result->free_cb) memcpy(result->free_cb, src->free_cb, sizeof (Eina_Free_Cb) * src->matches_count);
+     }
+
    for (i = 0; i < src->matches_count; i++)
      {
         result->matches[i].signal = eina_stringshare_ref(src->matches[i].signal);
         result->matches[i].source = eina_stringshare_ref(src->matches[i].source);
-        result->matches[i].func = src->matches[i].func;
+        result->matches[i].legacy = src->matches[i].legacy;
      }
 
    return result;
@@ -141,14 +158,23 @@ _edje_signal_callback_unset(Edje_Signal_Callback_Group *gp, int idx)
 static void
 _edje_signal_callback_set(Edje_Signal_Callback_Group *gp, int idx,
                           const char *sig, const char *src,
-                          Edje_Signal_Cb func, void *data, Edje_Signal_Callback_Flags flags)
+                          Edje_Signal_Cb func_legacy,
+                          Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb,
+                          void *data, Edje_Signal_Callback_Flags flags)
 {
    Edje_Signal_Callback_Match *m;
 
    m = gp->matches->matches + idx;
    m->signal = eina_stringshare_ref(sig);
    m->source = eina_stringshare_ref(src);
-   m->func = func;
+   if (func_legacy) m->legacy = func_legacy;
+   else m->eo = func_eo;
+   if (func_free_cb)
+     {
+        if (!gp->matches->free_cb)
+          ((Edje_Signal_Callback_Matches *) gp->matches)->free_cb = calloc(sizeof (Eina_Free_Cb), gp->matches->matches_count);
+        gp->matches->free_cb[idx] = func_free_cb;
+     }
 
    gp->custom_data[idx] = data;
 
@@ -163,6 +189,11 @@ _edje_signal_callback_grow(Edje_Signal_Callback_Group *gp)
    tmp = (Edje_Signal_Callback_Matches *)gp->matches;
    tmp->matches_count++;
    tmp->matches = realloc(tmp->matches, sizeof (Edje_Signal_Callback_Match) * tmp->matches_count);
+   if (tmp->free_cb)
+     {
+        tmp->free_cb = realloc(tmp->free_cb, sizeof (Eina_Free_Cb) * tmp->matches_count);
+        tmp->free_cb[tmp->matches_count - 1] = NULL;
+     }
    gp->custom_data = realloc(gp->custom_data, sizeof (void *) * tmp->matches_count);
    gp->flags = realloc(gp->flags, sizeof (Edje_Signal_Callback_Flags) * tmp->matches_count);
 
@@ -172,7 +203,9 @@ _edje_signal_callback_grow(Edje_Signal_Callback_Group *gp)
 Eina_Bool
 _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
                            const char *sig, const char *src,
-                           Edje_Signal_Cb func, void *data, Eina_Bool propagate)
+                           Edje_Signal_Cb func_legacy,
+                           Efl_Signal_Cb func_eo, Eina_Free_Cb func_free_cb,
+                           void *data, Eina_Bool propagate)
 {
    unsigned int i;
    Edje_Signal_Callback_Flags flags;
@@ -181,23 +214,11 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
    flags.delete_me = EINA_FALSE;
    flags.just_added = EINA_TRUE;
    flags.propagate = !!propagate;
+   flags.legacy = !!func_legacy;
 
+   // FIXME: properly handle legacy and non legacy case, including free function
    tmp = (Edje_Signal_Callback_Matches *)gp->matches;
 
-   // let's first try to see if we do find an empty matching stop
-   for (i = 0; i < tmp->matches_count; i++)
-     {
-        if ((sig == tmp->matches[i].signal) &&
-            (src == tmp->matches[i].source) &&
-            (func == tmp->matches[i].func) &&
-            (gp->flags[i].delete_me))
-          {
-             _edje_signal_callback_unset(gp, i);
-             _edje_signal_callback_set(gp, i, sig, src, func, data, flags);
-             return EINA_TRUE;
-          }
-     }
-
    if (tmp->hashed)
      {
         if (EINA_REFCOUNT_GET(tmp) == 1)
@@ -224,7 +245,7 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
         if (gp->flags[i].delete_me)
           {
              _edje_signal_callback_unset(gp, i);
-             _edje_signal_callback_set(gp, i, sig, src, func, data, flags);
+             _edje_signal_callback_set(gp, i, sig, src, func_legacy, func_eo, func_free_cb, data, flags);
              return EINA_TRUE;
           }
      }
@@ -232,7 +253,7 @@ _edje_signal_callback_push(Edje_Signal_Callback_Group *gp,
    _edje_signal_callback_grow(gp);
    // Set propagate and just_added flags
    _edje_signal_callback_set(gp, tmp->matches_count - 1,
-                             sig, src, func, data, flags);
+                             sig, src, func_legacy, func_eo, func_free_cb, data, flags);
 
    return EINA_TRUE;
 }
@@ -260,12 +281,24 @@ _edje_signal_callback_alloc(void)
 }
 
 void
-_edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m)
+_edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m, Edje_Signal_Callback_Flags *flags, void **custom_data)
 {
+   unsigned int i;
+
+   if (m->free_cb)
+     {
+        for (i = 0; i < m->matches_count; ++i)
+          {
+             if (!flags[i].delete_me &&
+                 m->free_cb[i])
+               {
+                  m->free_cb[i](custom_data[i]);
+               }
+          }
+     }
+
    EINA_REFCOUNT_UNREF(m)
    {
-      unsigned int i;
-
       _edje_signal_callback_patterns_unref(m->patterns);
 
       if (m->hashed)
@@ -292,7 +325,7 @@ _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp)
 
    if (!gp) return;
 
-   _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches);
+   _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches, gp->flags, gp->custom_data);
    gp->matches = NULL;
    free(gp->flags);
    gp->flags = NULL;
@@ -304,7 +337,8 @@ _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp)
 Eina_Bool
 _edje_signal_callback_disable(Edje_Signal_Callback_Group *gp,
                               const char *sig, const char *src,
-                              Edje_Signal_Cb func, void *data)
+                              Edje_Signal_Cb func_legacy,
+                              EflLayoutSignalCb func, Eina_Free_Cb func_free_cb, void *data)
 {
    unsigned int i;
 
@@ -314,10 +348,17 @@ _edje_signal_callback_disable(Edje_Signal_Callback_Group *gp,
      {
         if (sig == gp->matches->matches[i].signal &&
             src == gp->matches->matches[i].source &&
-            func == gp->matches->matches[i].func &&
-            gp->custom_data[i] == data &&
-            !gp->flags[i].delete_me)
+            !gp->flags[i].delete_me &&
+            ((func == gp->matches->matches[i].eo &&
+              (!gp->matches->free_cb || func_free_cb == gp->matches->free_cb[i]) &&
+              gp->custom_data[i] == data &&
+              !gp->flags[i].legacy) ||
+             (func_legacy == gp->matches->matches[i].legacy &&
+              gp->custom_data[i] == data &&
+              gp->flags[i].legacy))
+            )
           {
+             if (func && func_free_cb) func_free_cb(data);
              gp->flags[i].delete_me = EINA_TRUE;
              //return gp->custom_data[i];
              return EINA_TRUE;
@@ -341,9 +382,7 @@ _edje_signal_callback_move_last(Edje_Signal_Callback_Group *gp,
         if (!gp->flags[j].delete_me)
           {
              _edje_signal_callback_unset(gp, i);
-             m->matches[i].signal = m->matches[j].signal;
-             m->matches[i].source = m->matches[j].source;
-             m->matches[i].func = m->matches[j].func;
+             memcpy(&m->matches[i], &m->matches[j], sizeof (Edje_Signal_Callback_Match));
              gp->flags[i] = gp->flags[j];
              gp->custom_data[i] = gp->custom_data[j];
              return;
@@ -394,7 +433,7 @@ _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp)
      }
    else
      {
-        _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches);
+        _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches, gp->flags, gp->custom_data);
         ((Edje_Signal_Callback_Group *)gp)->matches = m;
         tmp = (Edje_Signal_Callback_Matches *)gp->matches;
         EINA_REFCOUNT_REF(tmp);
index 708dc32..3b4562e 100644 (file)
@@ -8,7 +8,14 @@
   match that.
 */
 
-type Efl.Signal_Cb: __undefined_type; [[Signal callback.]]
+function EflLayoutSignalCb {
+  [[EflLayoutSignalCb function that is called when a specifc pair of signal/emision is triggered]]
+  params {
+     @in object: Efl.Layout.Signal; [[The object the callback is being triggered from.]]
+     @in emission: string; [[The name component of the signal.]]
+     @in source: string; [[The source of a signal used as context.]]
+  }
+};
 
 interface Efl.Layout.Signal
 {
@@ -83,9 +90,8 @@ interface Efl.Layout.Signal
          params {
             @in emission: string; [[The signal's "emission" string]]
             @in source: string; [[The signal's "source" string]]
-            @in func: Efl.Signal_Cb;
+            @in func: EflLayoutSignalCb;
                [[The callback function to be executed when the signal is emitted.]]
-            @in data: void_ptr; [[A pointer to data to pass to $func.]]
          }
          return: bool; [[$true in case of success, $false in case of error.]]
       }
@@ -102,9 +108,8 @@ interface Efl.Layout.Signal
          params {
             @in emission: string; [[The signal's "emission" string]]
             @in source: string; [[The signal's "source" string]]
-            @in func: Efl.Signal_Cb;
+            @in func: EflLayoutSignalCb;
                [[The callback function to be executed when the signal is emitted.]]
-            @in data: void_ptr; [[A pointer to data to pass to $func.]]
          }
          return: bool; [[$true in case of success, $false in case of error.]]
       }
index 36a8290..54ae773 100644 (file)
@@ -328,20 +328,20 @@ _efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
    if (elm_widget_is_legacy(obj))
      {
         efl_layout_signal_callback_add
-           (wd->resize_obj, "elm,action,check,on", "*", _on_check_on, obj);
+          (wd->resize_obj, "elm,action,check,on", "*", obj, _on_check_on, NULL);
         efl_layout_signal_callback_add
-           (wd->resize_obj, "elm,action,check,off", "*", _on_check_off, obj);
+          (wd->resize_obj, "elm,action,check,off", "*", obj, _on_check_off, NULL);
         efl_layout_signal_callback_add
-           (wd->resize_obj, "elm,action,check,toggle", "*", _on_check_toggle, obj);
+          (wd->resize_obj, "elm,action,check,toggle", "*", obj, _on_check_toggle, NULL);
      }
    else
      {
         efl_layout_signal_callback_add
-           (wd->resize_obj, "efl,action,check,on", "*", _on_check_on, obj);
+          (wd->resize_obj, "efl,action,check,on", "*", obj, _on_check_on, NULL);
         efl_layout_signal_callback_add
-           (wd->resize_obj, "efl,action,check,off", "*", _on_check_off, obj);
+          (wd->resize_obj, "efl,action,check,off", "*", obj, _on_check_off, NULL);
         efl_layout_signal_callback_add
-           (wd->resize_obj, "efl,action,check,toggle", "*", _on_check_toggle, obj);
+          (wd->resize_obj, "efl,action,check,toggle", "*", obj, _on_check_toggle, NULL);
      }
 
    efl_access_object_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX);
index 0b2453c..4db9968 100644 (file)
@@ -435,40 +435,40 @@ _scroll_edje_object_attach(Eo *obj)
    EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd);
 
    efl_layout_signal_callback_add(obj, "reload", "efl",
-                                  _efl_ui_grid_reload_cb, obj);
+                                  obj, _efl_ui_grid_reload_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag", "efl.dragable.vbar",
-                                  _efl_ui_grid_vbar_drag_cb, obj);
+                                  obj, _efl_ui_grid_vbar_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_start_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_stop_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "efl,vbar,press", "efl",
-                                  _efl_ui_grid_vbar_press_cb, obj);
+                                  obj, _efl_ui_grid_vbar_press_cb, NULL);
    efl_layout_signal_callback_add(obj, "efl,vbar,unpress", "efl",
-                                  _efl_ui_grid_vbar_unpress_cb, obj);
+                                  obj, _efl_ui_grid_vbar_unpress_cb, NULL);
 
    efl_layout_signal_callback_add(obj, "drag", "efl.dragable.hbar",
-                                  _efl_ui_grid_hbar_drag_cb, obj);
+                                  obj, _efl_ui_grid_hbar_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,set", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,start", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_start_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,stop", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_stop_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,step", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "drag,page", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_add(obj, "efl,hbar,press", "efl",
-                                  _efl_ui_grid_hbar_press_cb, obj);
+                                  obj, _efl_ui_grid_hbar_press_cb, NULL);
    efl_layout_signal_callback_add(obj, "efl,hbar,unpress", "efl",
-                                  _efl_ui_grid_hbar_unpress_cb, obj);
+                                  obj, _efl_ui_grid_hbar_unpress_cb, NULL);
 }
 
 static void
@@ -477,40 +477,40 @@ _scroll_edje_object_detach(Eo *obj)
    EFL_UI_GRID_DATA_GET_OR_RETURN(obj, pd);
 
    efl_layout_signal_callback_del(obj, "reload", "efl",
-                                  _efl_ui_grid_reload_cb, obj);
+                                  obj, _efl_ui_grid_reload_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag", "efl.dragable.vbar",
-                                  _efl_ui_grid_vbar_drag_cb, obj);
+                                  obj, _efl_ui_grid_vbar_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_start_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_stop_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.vbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "efl,vbar,press", "efl",
-                                  _efl_ui_grid_vbar_press_cb, obj);
+                                  obj, _efl_ui_grid_vbar_press_cb, NULL);
    efl_layout_signal_callback_del(obj, "efl,vbar,unpress", "efl",
-                                  _efl_ui_grid_vbar_unpress_cb, obj);
+                                  obj, _efl_ui_grid_vbar_unpress_cb, NULL);
 
    efl_layout_signal_callback_del(obj, "drag", "efl.dragable.hbar",
-                                  _efl_ui_grid_hbar_drag_cb, obj);
+                                  obj, _efl_ui_grid_hbar_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,set", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,start", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_start_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,stop", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_stop_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,step", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "drag,page", "efl.dragable.hbar",
-                                  _efl_ui_grid_edje_drag_cb, obj);
+                                  obj, _efl_ui_grid_edje_drag_cb, NULL);
    efl_layout_signal_callback_del(obj, "efl,hbar,press", "efl",
-                                  _efl_ui_grid_hbar_press_cb, obj);
+                                  obj, _efl_ui_grid_hbar_press_cb, NULL);
    efl_layout_signal_callback_del(obj, "efl,hbar,unpress", "efl",
-                                  _efl_ui_grid_hbar_unpress_cb, obj);
+                                  obj, _efl_ui_grid_hbar_unpress_cb, NULL);
 }
 
 static void
index c20ff54..6edcdeb 100644 (file)
@@ -1623,108 +1623,108 @@ _efl_ui_image_zoomable_edje_object_attach(Eo *obj)
    if (elm_widget_is_legacy(obj))
      {
         efl_layout_signal_callback_add
-           (obj, "reload", "elm", _efl_ui_image_zoomable_reload_cb, obj);
+          (obj, "reload", "elm", obj, _efl_ui_image_zoomable_reload_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_vbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,set", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,start", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,stop", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,step", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,page", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "elm,vbar,press", "elm",
-            _efl_ui_image_zoomable_vbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "elm,vbar,unpress", "elm",
-            _efl_ui_image_zoomable_vbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_hbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,set", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,start", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,stop", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,step", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,page", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "elm,hbar,press", "elm",
-            _efl_ui_image_zoomable_hbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "elm,hbar,unpress", "elm",
-            _efl_ui_image_zoomable_hbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
      }
    else
      {
         efl_layout_signal_callback_add
-           (obj, "reload", "efl", _efl_ui_image_zoomable_reload_cb, obj);
+          (obj, "reload", "efl", obj, _efl_ui_image_zoomable_reload_cb, NULL);
         efl_layout_signal_callback_add
-           (obj, "drag", "efl.dragable.vbar", _efl_ui_image_zoomable_vbar_drag_cb,
-            obj);
+          (obj, "drag", "efl.dragable.vbar",
+           obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,set", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,start", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,stop", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,step", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,page", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "efl,vbar,press", "efl",
-            _efl_ui_image_zoomable_vbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "efl,vbar,unpress", "efl",
-            _efl_ui_image_zoomable_vbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
         efl_layout_signal_callback_add
-           (obj, "drag", "efl.dragable.hbar", _efl_ui_image_zoomable_hbar_drag_cb,
-            obj);
+           (obj, "drag", "efl.dragable.hbar",
+            obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,set", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,start", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,stop", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,step", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "drag,page", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "efl,hbar,press", "efl",
-            _efl_ui_image_zoomable_hbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
         efl_layout_signal_callback_add
            (obj, "efl,hbar,unpress", "efl",
-            _efl_ui_image_zoomable_hbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
      }
 }
 
@@ -1734,108 +1734,108 @@ _efl_ui_image_zoomable_edje_object_detach(Evas_Object *obj)
    if (elm_widget_is_legacy(obj))
      {
         efl_layout_signal_callback_del
-           (obj, "reload", "elm", _efl_ui_image_zoomable_reload_cb, obj);
+          (obj, "reload", "elm", obj, _efl_ui_image_zoomable_reload_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_vbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,set", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,start", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,stop", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,step", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,page", "elm.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "elm,vbar,press", "elm",
-            _efl_ui_image_zoomable_vbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "elm,vbar,unpress", "elm",
-            _efl_ui_image_zoomable_vbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_hbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,set", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,start", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,stop", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,step", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,page", "elm.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "elm,hbar,press", "elm",
-            _efl_ui_image_zoomable_hbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "elm,hbar,unpress", "elm",
-            _efl_ui_image_zoomable_hbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
      }
    else
      {
         efl_layout_signal_callback_del
-           (obj, "reload", "efl", _efl_ui_image_zoomable_reload_cb, obj);
+          (obj, "reload", "efl", obj, _efl_ui_image_zoomable_reload_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_vbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,set", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,start", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,stop", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,step", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,page", "efl.dragable.vbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "efl,vbar,press", "efl",
-            _efl_ui_image_zoomable_vbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_press_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "efl,vbar,unpress", "efl",
-            _efl_ui_image_zoomable_vbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_vbar_unpress_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_hbar_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,set", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,start", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_start_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_start_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,stop", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_stop_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_stop_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,step", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "drag,page", "efl.dragable.hbar",
-            _efl_ui_image_zoomable_edje_drag_cb, obj);
+            obj, _efl_ui_image_zoomable_edje_drag_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "efl,hbar,press", "efl",
-            _efl_ui_image_zoomable_hbar_press_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_press_cb, NULL);
         efl_layout_signal_callback_del
            (obj, "efl,hbar,unpress", "efl",
-            _efl_ui_image_zoomable_hbar_unpress_cb, obj);
+            obj, _efl_ui_image_zoomable_hbar_unpress_cb, NULL);
      }
 }
 
@@ -2012,23 +2012,27 @@ _efl_ui_image_zoomable_efl_layout_group_group_size_max_get(const Eo *obj EINA_UN
 }
 
 EOLIAN static Eina_Bool
-_efl_ui_image_zoomable_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_efl_ui_image_zoomable_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Image_Zoomable_Data *pd EINA_UNUSED,
+                                                             const char *emission, const char *source,
+                                                             void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
 
 EOLIAN static Eina_Bool
-_efl_ui_image_zoomable_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+_efl_ui_image_zoomable_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Image_Zoomable_Data *pd EINA_UNUSED,
+                                                             const char *emission, const char *source,
+                                                             void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
index c9368fb..e52b8f4 100644 (file)
@@ -1120,20 +1120,20 @@ _efl_ui_layout_efl_layout_signal_signal_emit(Eo *obj, Efl_Ui_Layout_Data *_pd EI
    efl_layout_signal_emit(wd->resize_obj, emission, source);
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source, Efl_Signal_Cb func, void *data)
+static Eina_Bool
+_efl_ui_layout_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    // Don't do anything else than call forward here
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-   return efl_layout_signal_callback_add(wd->resize_obj, emission, source, func, data);
+   return efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_layout_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
+static Eina_Bool
+_efl_ui_layout_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_Layout_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    // Don't do anything else than call forward here
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-   return efl_layout_signal_callback_del(wd->resize_obj, emission, source, func, data);
+   return efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 }
 
 // TODO:
@@ -3147,7 +3147,7 @@ _elm_layout_signal_callback_add_legacy(Eo *obj, Eo *edje, Eina_List **p_edje_sig
    esd->data = data;
    *p_edje_signals = eina_list_append(*p_edje_signals, esd);
 
-   efl_layout_signal_callback_add(edje, emission, source,
+   edje_object_signal_callback_add(edje, emission, source,
                                          _edje_signal_callback, esd);
 }
 
@@ -3190,8 +3190,8 @@ _elm_layout_signal_callback_del_legacy(Eo *obj EINA_UNUSED, Eo *edje, Eina_List
           {
              *p_edje_signals = eina_list_remove_list(*p_edje_signals, l);
 
-             efl_layout_signal_callback_del(edje, emission, source,
-                                                   _edje_signal_callback, esd);
+             edje_object_signal_callback_del_full(edje, emission, source,
+                                                  _edje_signal_callback, esd);
 
              eina_stringshare_del(esd->emission);
              eina_stringshare_del(esd->source);
index 045346c..1a0f9aa 100644 (file)
@@ -255,57 +255,57 @@ _scroll_edje_object_attach(Eo *obj)
 
    efl_layout_signal_callback_add
      (obj, "reload", "efl",
-     _efl_ui_list_reload_cb, obj);
+     obj, _efl_ui_list_reload_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag", "efl.dragable.vbar",
-     _efl_ui_list_vbar_drag_cb, obj);
+     obj, _efl_ui_list_vbar_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_start_cb, obj);
+     obj, _efl_ui_list_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_stop_cb, obj);
+     obj, _efl_ui_list_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_list_vbar_press_cb, obj);
+     obj, _efl_ui_list_vbar_press_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,unpress", "efl",
-     _efl_ui_list_vbar_unpress_cb, obj);
+     obj, _efl_ui_list_vbar_unpress_cb, NULL);
 
    /* FIXME: Horizontal Scroll is not yet supported in the list.
       efl_layout_signal_callback_add
       (obj, "drag", "efl.dragable.hbar",
-       _efl_ui_list_hbar_drag_cb, obj);
+       obj, _efl_ui_list_hbar_drag_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "drag,set", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "drag,start", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_start_cb, obj);
+       obj, _efl_ui_list_edje_drag_start_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "drag,stop", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_stop_cb, obj);
+       obj, _efl_ui_list_edje_drag_stop_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "drag,step", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "drag,page", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "efl,hbar,press", "efl",
-       _efl_ui_list_hbar_press_cb, obj);
+       obj, _efl_ui_list_hbar_press_cb, NULL);
       efl_layout_signal_callback_add
       (obj, "efl,hbar,unpress", "efl",
-       _efl_ui_list_hbar_unpress_cb, obj);
+       obj, _efl_ui_list_hbar_unpress_cb, NULL);
     */
 }
 
@@ -316,57 +316,57 @@ _scroll_edje_object_detach(Eo *obj)
 
    efl_layout_signal_callback_del
      (obj, "reload", "efl",
-     _efl_ui_list_reload_cb, obj);
+     obj, _efl_ui_list_reload_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag", "efl.dragable.vbar",
-     _efl_ui_list_vbar_drag_cb, obj);
+     obj, _efl_ui_list_vbar_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_start_cb, obj);
+     obj, _efl_ui_list_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_stop_cb, obj);
+     obj, _efl_ui_list_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_list_edje_drag_cb, obj);
+     obj, _efl_ui_list_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_list_vbar_press_cb, obj);
+     obj, _efl_ui_list_vbar_press_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,unpress", "efl",
-     _efl_ui_list_vbar_unpress_cb, obj);
+     obj, _efl_ui_list_vbar_unpress_cb, NULL);
 
    /* FIXME: Horizontal Scroll is not yet supported in the list.
       efl_layout_signal_callback_del
       (obj, "drag", "efl.dragable.hbar",
-       _efl_ui_list_hbar_drag_cb, obj);
+       obj, _efl_ui_list_hbar_drag_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "drag,set", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "drag,start", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_start_cb, obj);
+       obj, _efl_ui_list_edje_drag_start_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "drag,stop", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_stop_cb, obj);
+       obj, _efl_ui_list_edje_drag_stop_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "drag,step", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "drag,page", "efl.dragable.hbar",
-       _efl_ui_list_edje_drag_cb, obj);
+       obj, _efl_ui_list_edje_drag_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "efl,hbar,press", "efl",
-       _efl_ui_list_hbar_press_cb, obj);
+       obj, _efl_ui_list_hbar_press_cb, NULL);
       efl_layout_signal_callback_del
       (obj, "efl,hbar,unpress", "efl",
-       _efl_ui_list_hbar_unpress_cb, obj);
+       obj, _efl_ui_list_hbar_unpress_cb, NULL);
     */
 }
 
index efa3e82..b24cae0 100644 (file)
@@ -438,24 +438,24 @@ _efl_ui_list_view_bar_hide_cb(void *data, const Efl_Event *event)
      edje_object_signal_emit(wd->resize_obj, "efl,action,hide,vbar", "efl");
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_efl_ui_list_view_efl_layout_signal_signal_callback_add(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_add(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_List_View_Data *sd EINA_UNUSED, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_efl_ui_list_view_efl_layout_signal_signal_callback_del(Eo *obj, Efl_Ui_List_View_Data *pd EINA_UNUSED, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_del(wd->resize_obj, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
@@ -464,116 +464,118 @@ static void
 _efl_ui_list_view_edje_object_attach(Eo *obj)
 {
    efl_layout_signal_callback_add
-     (obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj);
+     (obj, "reload", "efl",
+      obj, _efl_ui_list_view_reload_cb, NULL);
   //Vertical bar
    efl_layout_signal_callback_add
      (obj, "drag", "efl.dragable.vbar",
-     _efl_ui_list_view_vbar_drag_cb, obj);
+      obj, _efl_ui_list_view_vbar_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_start_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_stop_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_list_view_vbar_press_cb, obj);
+      obj, _efl_ui_list_view_vbar_press_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,unpress", "efl",
-     _efl_ui_list_view_vbar_unpress_cb, obj);
+      obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
 
-  //Horizontal bar
+   //Horizontal bar
    efl_layout_signal_callback_add
      (obj, "drag", "efl.dragable.hbar",
-     _efl_ui_list_view_hbar_drag_cb, obj);
+      obj, _efl_ui_list_view_hbar_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,set", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,start", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_start_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,stop", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_stop_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,step", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,page", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,hbar,press", "efl",
-     _efl_ui_list_view_hbar_press_cb, obj);
+      obj, _efl_ui_list_view_hbar_press_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,hbar,unpress", "efl",
-     _efl_ui_list_view_hbar_unpress_cb, obj);
+      obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
 }
 
 static void
 _efl_ui_list_view_edje_object_detach(Evas_Object *obj)
 {
    efl_layout_signal_callback_del
-     (obj, "reload", "efl", _efl_ui_list_view_reload_cb, obj);
-  //Vertical bar
+     (obj, "reload", "efl",
+      obj, _efl_ui_list_view_reload_cb, NULL);
+   //Vertical bar
    efl_layout_signal_callback_del
-     (obj, "drag", "efl.dragable.vbar", _efl_ui_list_view_vbar_drag_cb,
-     obj);
+     (obj, "drag", "efl.dragable.vbar",
+      obj, _efl_ui_list_view_vbar_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_start_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_stop_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_list_view_vbar_press_cb, obj);
+      obj, _efl_ui_list_view_vbar_press_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,unpress", "efl",
-   _efl_ui_list_view_vbar_unpress_cb, obj);
+      obj, _efl_ui_list_view_vbar_unpress_cb, NULL);
 
    //Horizontal bar
    efl_layout_signal_callback_del
-       (obj, "drag", "efl.dragable.hbar",
-       _efl_ui_list_view_hbar_drag_cb, obj);
+     (obj, "drag", "efl.dragable.hbar",
+      obj, _efl_ui_list_view_hbar_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,set", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,start", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_start_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,stop", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_stop_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,step", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,page", "efl.dragable.hbar",
-     _efl_ui_list_view_edje_drag_cb, obj);
+      obj, _efl_ui_list_view_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,hbar,press", "efl",
-     _efl_ui_list_view_hbar_press_cb, obj);
+      obj, _efl_ui_list_view_hbar_press_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,hbar,unpress", "efl",
-     _efl_ui_list_view_hbar_unpress_cb, obj);
+      obj, _efl_ui_list_view_hbar_unpress_cb, NULL);
 }
 
 EOLIAN static void
index 1ee831e..8a16d25 100644 (file)
@@ -45,7 +45,7 @@ _efl_ui_nstate_efl_object_constructor(Eo *obj, Efl_Ui_Nstate_Data *pd)
 
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
    efl_layout_signal_callback_add
-     (wd->resize_obj, "efl,action,state,changed", "*", _on_state_changed, obj);
+     (wd->resize_obj, "efl,action,state,changed", "*", obj, _on_state_changed, NULL);
 
    //TODO: Add ATSPI call here
 
index f81aa83..ef8cc1a 100644 (file)
@@ -279,55 +279,56 @@ _scroll_edje_object_attach(Eo *obj)
    EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd);
 
    efl_layout_signal_callback_add
-     (obj, "reload", "efl", _efl_ui_scroller_reload_cb, obj);
+     (obj, "reload", "efl",
+      obj, _efl_ui_scroller_reload_cb, NULL);
    efl_layout_signal_callback_add
-     (obj, "drag", "efl.dragable.vbar", _efl_ui_scroller_vbar_drag_cb,
-     obj);
+     (obj, "drag", "efl.dragable.vbar",
+      obj, _efl_ui_scroller_vbar_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_start_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_stop_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_scroller_vbar_press_cb, obj);
+      obj, _efl_ui_scroller_vbar_press_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,vbar,unpress", "efl",
-     _efl_ui_scroller_vbar_unpress_cb, obj);
+      obj, _efl_ui_scroller_vbar_unpress_cb, NULL);
    efl_layout_signal_callback_add
-     (obj, "drag", "efl.dragable.hbar", _efl_ui_scroller_hbar_drag_cb,
-     obj);
+     (obj, "drag", "efl.dragable.hbar",
+      obj, _efl_ui_scroller_hbar_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,set", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,start", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_start_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,stop", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_stop_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,step", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "drag,page", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,hbar,press", "efl",
-     _efl_ui_scroller_hbar_press_cb, obj);
+      obj, _efl_ui_scroller_hbar_press_cb, NULL);
    efl_layout_signal_callback_add
      (obj, "efl,hbar,unpress", "efl",
-     _efl_ui_scroller_hbar_unpress_cb, obj);
+      obj, _efl_ui_scroller_hbar_unpress_cb, NULL);
 }
 
 static void
@@ -336,55 +337,56 @@ _scroll_edje_object_detach(Evas_Object *obj)
    EFL_UI_SCROLLER_DATA_GET_OR_RETURN(obj, sd);
 
    efl_layout_signal_callback_del
-     (obj, "reload", "efl", _efl_ui_scroller_reload_cb, obj);
+     (obj, "reload", "efl",
+      obj, _efl_ui_scroller_reload_cb, NULL);
    efl_layout_signal_callback_del
-     (obj, "drag", "efl.dragable.vbar", _efl_ui_scroller_vbar_drag_cb,
-     obj);
+     (obj, "drag", "efl.dragable.vbar",
+      obj, _efl_ui_scroller_vbar_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,set", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,start", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_start_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,stop", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_stop_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,step", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,page", "efl.dragable.vbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,press", "efl",
-     _efl_ui_scroller_vbar_press_cb, obj);
+      obj, _efl_ui_scroller_vbar_press_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,vbar,unpress", "efl",
-     _efl_ui_scroller_vbar_unpress_cb, obj);
+      obj, _efl_ui_scroller_vbar_unpress_cb, NULL);
    efl_layout_signal_callback_del
-     (obj, "drag", "efl.dragable.hbar", _efl_ui_scroller_hbar_drag_cb,
-     obj);
+     (obj, "drag", "efl.dragable.hbar",
+      obj, _efl_ui_scroller_hbar_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,set", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,start", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_start_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_start_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,stop", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_stop_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_stop_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,step", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "drag,page", "efl.dragable.hbar",
-     _efl_ui_scroller_edje_drag_cb, obj);
+      obj, _efl_ui_scroller_edje_drag_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,hbar,press", "efl",
-     _efl_ui_scroller_hbar_press_cb, obj);
+      obj, _efl_ui_scroller_hbar_press_cb, NULL);
    efl_layout_signal_callback_del
      (obj, "efl,hbar,unpress", "efl",
-     _efl_ui_scroller_hbar_unpress_cb, obj);
+      obj, _efl_ui_scroller_hbar_unpress_cb, NULL);
 }
 
 static void
index 7115e70..ad853cf 100644 (file)
@@ -658,11 +658,11 @@ _efl_ui_slider_efl_object_constructor(Eo *obj, Efl_Ui_Slider_Data *priv)
    priv->val_max = 1.0;
    priv->step = SLIDER_STEP;
 
-   efl_layout_signal_callback_add(obj, "drag", "*", _drag, obj);
-   efl_layout_signal_callback_add(obj, "drag,start", "*", _drag_start, obj);
-   efl_layout_signal_callback_add(obj, "drag,stop", "*", _drag_stop, obj);
-   efl_layout_signal_callback_add(obj, "drag,step", "*", _drag_step, obj);
-   efl_layout_signal_callback_add(obj, "drag,page", "*", _drag_stop, obj);
+   efl_layout_signal_callback_add(obj, "drag", "*", obj, _drag, NULL);
+   efl_layout_signal_callback_add(obj, "drag,start", "*", obj, _drag_start, NULL);
+   efl_layout_signal_callback_add(obj, "drag,stop", "*", obj, _drag_stop, NULL);
+   efl_layout_signal_callback_add(obj, "drag,step", "*", obj, _drag_step, NULL);
+   efl_layout_signal_callback_add(obj, "drag,page", "*", obj, _drag_stop, NULL);
 
    priv->spacer = efl_add(EFL_CANVAS_RECTANGLE_CLASS, obj,
                           efl_gfx_color_set(efl_added, 0, 0, 0, 0),
index be9f8a1..f7b37f3 100644 (file)
@@ -87,7 +87,7 @@ _tab_icon_set_cb(void *data,
    Tab_Info *ti = data;
    _tab_icon_update(ti);
 
-   efl_layout_signal_callback_del(obj, emission, source, _tab_icon_set_cb, ti);
+   efl_layout_signal_callback_del(obj, emission, source, ti, _tab_icon_set_cb, NULL);
    efl_layout_signal_emit(ti->tab, "efl,state,icon,reset", "efl");
 }
 
@@ -129,7 +129,7 @@ _tab_icon_obj_set(Eo *obj,
           (efl_part(ti->tab, "efl.icon_new"), ti->icon);
         efl_layout_signal_emit(ti->tab, "efl,state,icon_new,set", "efl");
         efl_layout_signal_callback_add
-          (ti->tab, "efl,state,icon_set,done", "efl", _tab_icon_set_cb, ti);
+          (ti->tab, "efl,state,icon_set,done", "efl", ti, _tab_icon_set_cb, NULL);
      }
    else
      _tab_icon_update(ti);
@@ -248,7 +248,7 @@ _tab_add(Eo *obj, const char *label, const char *icon)
      CRI("Failed to set layout!");
 
    efl_layout_signal_callback_add
-     (tab, "efl,action,click", "efl", _action_click_cb, ti);
+     (tab, "efl,action,click", "efl", ti,_action_click_cb, NULL);
 
    if (ti->icon)
      efl_content_set(efl_part(tab, "efl.icon"), ti->icon);
index c134351..c11d8c1 100644 (file)
@@ -1661,26 +1661,26 @@ _efl_ui_text_efl_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data
      }
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_text_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_efl_ui_text_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *pd, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
 
-   ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data);
-   if (sd->scr_edje)
-     ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_add(pd->entry_edje, emission, source, func_data, func, func_free_cb);
+   if (pd->scr_edje)
+     ok = efl_layout_signal_callback_add(pd->scr_edje, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
 
-EOLIAN static Eina_Bool
-_efl_ui_text_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_efl_ui_text_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Efl_Ui_Text_Data *pd, const char *emission, const char *source, void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
 
-   ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data);
-   if (sd->scr_edje)
-     ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_del(pd->entry_edje, emission, source, func_data, func, func_free_cb);
+   if (pd->scr_edje)
+     ok = efl_layout_signal_callback_del(pd->scr_edje, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
index 86d6429..078f960 100644 (file)
@@ -4179,26 +4179,30 @@ _elm_entry_efl_layout_signal_signal_emit(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd
      }
 }
 
-EOLIAN static Eina_Bool
-_elm_entry_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_elm_entry_efl_layout_signal_signal_callback_add(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd,
+                                                 const char *emission, const char *source,
+                                                 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
 
-   ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_add(sd->entry_edje, emission, source, func_data, func, func_free_cb);
    if (sd->scr_edje)
-     ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
+     ok = efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
 
-EOLIAN static Eina_Bool
-_elm_entry_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd, const char *emission, const char *source, Edje_Signal_Cb func_cb, void *data)
+static Eina_Bool
+_elm_entry_efl_layout_signal_signal_callback_del(Eo *obj EINA_UNUSED, Elm_Entry_Data *sd,
+                                                 const char *emission, const char *source,
+                                                 void *func_data, EflLayoutSignalCb func, Eina_Free_Cb func_free_cb)
 {
    Eina_Bool ok;
 
-   ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_cb, data);
+   ok = efl_layout_signal_callback_del(sd->entry_edje, emission, source, func_data, func, func_free_cb);
    if (sd->scr_edje)
-     ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
+     ok = efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_data, func, func_free_cb);
 
    return ok;
 }
@@ -4216,7 +4220,7 @@ _elm_entry_signal_callback_add_legacy(Eo *obj, const char *emission, const char
                                           emission, source, func_cb, data);
 
    if (sd->scr_edje)
-     efl_layout_signal_callback_add(sd->scr_edje, emission, source, func_cb, data);
+     efl_layout_signal_callback_add(sd->scr_edje, emission, source, data, func_cb, NULL);
 }
 
 void *
@@ -4232,7 +4236,7 @@ _elm_entry_signal_callback_del_legacy(Eo *obj, const char *emission, const char
                                                  emission, source, func_cb);
 
    if (sd->scr_edje)
-     efl_layout_signal_callback_del(sd->scr_edje, emission, source, func_cb, data);
+     efl_layout_signal_callback_del(sd->scr_edje, emission, source, data, func_cb, NULL);
 
    return data;
 }
index 2d5df2f..b3f850c 100644 (file)
@@ -634,17 +634,17 @@ init_video_object(const char *module_filename, const char *filename)
 
    efl_event_callback_array_add(o, emotion_object_test_callbacks(), oe);
 
-   efl_layout_signal_callback_add(oe, "video_control", "play", video_obj_signal_play_cb, o);
-   efl_layout_signal_callback_add(oe, "video_control", "pause", video_obj_signal_pause_cb, o);
-   efl_layout_signal_callback_add(oe, "video_control", "stop", video_obj_signal_stop_cb, o);
-   efl_layout_signal_callback_add(oe, "drag", "video_progress", video_obj_signal_jump_cb, o);
-   efl_layout_signal_callback_add(oe, "drag", "video_alpha", video_obj_signal_alpha_cb, o);
-   efl_layout_signal_callback_add(oe, "drag", "video_volume", video_obj_signal_vol_cb, o);
-   efl_layout_signal_callback_add(oe, "frame_move", "start", video_obj_signal_frame_move_start_cb, oe);
-   efl_layout_signal_callback_add(oe, "frame_move", "stop", video_obj_signal_frame_move_stop_cb, oe);
-   efl_layout_signal_callback_add(oe, "frame_resize", "start", video_obj_signal_frame_resize_start_cb, oe);
-   efl_layout_signal_callback_add(oe, "frame_resize", "stop", video_obj_signal_frame_resize_stop_cb, oe);
-   efl_layout_signal_callback_add(oe, "mouse, move", "*", video_obj_signal_frame_move_cb, oe);
+   efl_layout_signal_callback_add(oe, "video_control", "play", o, video_obj_signal_play_cb, NULL);
+   efl_layout_signal_callback_add(oe, "video_control", "pause", o, video_obj_signal_pause_cb, NULL);
+   efl_layout_signal_callback_add(oe, "video_control", "stop", o, video_obj_signal_stop_cb, NULL);
+   efl_layout_signal_callback_add(oe, "drag", "video_progress", o, video_obj_signal_jump_cb, NULL);
+   efl_layout_signal_callback_add(oe, "drag", "video_alpha", o, video_obj_signal_alpha_cb, NULL);
+   efl_layout_signal_callback_add(oe, "drag", "video_volume", o, video_obj_signal_vol_cb, NULL);
+   efl_layout_signal_callback_add(oe, "frame_move", "start", oe, video_obj_signal_frame_move_start_cb, NULL);
+   efl_layout_signal_callback_add(oe, "frame_move", "stop", oe, video_obj_signal_frame_move_stop_cb, NULL);
+   efl_layout_signal_callback_add(oe, "frame_resize", "start", oe, video_obj_signal_frame_resize_start_cb, NULL);
+   efl_layout_signal_callback_add(oe, "frame_resize", "stop", oe, video_obj_signal_frame_resize_stop_cb, NULL);
+   efl_layout_signal_callback_add(oe, "mouse, move", "*", oe, video_obj_signal_frame_move_cb, NULL);
    efl_ui_drag_value_set(efl_part(oe, "video_alpha"), 0.0, 1.0);
    efl_text_set(efl_part(oe, "video_alpha_txt"), "alpha 255");
    efl_ui_drag_value_set(efl_part(oe, "video_volume"), 0.0, 0.5);