Revert "fix crashes created by "make efl_loop_promise_new a function""
authorCedric BAIL <cedric.bail@free.fr>
Sat, 5 Jan 2019 00:04:49 +0000 (16:04 -0800)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 24 Jan 2019 05:20:17 +0000 (14:20 +0900)
This serie of patch didn't address the core problem in the design of the
ownership of eina_promise_data_{set/get} usage. It is also redundant with
other infrastructure in eina_promise and so not necessary completely.

This reverts commit de2ec0559b01dba7919503955cc47c1c5fcd0f97.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7573

src/lib/ecore/efl_loop_consumer.c
src/lib/eina/eina_promise.c
src/lib/eina/eina_promise.h

index 17e2dbd..5260931 100644 (file)
@@ -77,20 +77,6 @@ _cancel_triggered(void *data, const Eina_Promise *p)
    if (lcp->func) lcp->func(lcp->data, lcp->obj, p);
 }
 
-static void
-_data_set(Eina_Promise *p, void *data)
-{
-   Efl_Loop_Consumer_Promise *lcp = eina_promise_data_get(p);
-   lcp->data = data;
-}
-
-static void
-_cancel_free_cb_set(Eina_Promise *p, Eina_Free_Cb free_cb)
-{
-   Efl_Loop_Consumer_Promise *lcp = eina_promise_data_get(p);
-   lcp->free = free_cb;
-}
-
 static Eina_Promise *
 _efl_loop_consumer_promise_new(const Eo *obj, Efl_Loop_Consumer_Data *pd EINA_UNUSED,
                                void *cancel_data, EflLoopConsumerPromiseCancel cancel, Eina_Free_Cb cancel_free_cb)
@@ -106,11 +92,7 @@ _efl_loop_consumer_promise_new(const Eo *obj, Efl_Loop_Consumer_Data *pd EINA_UN
    lcp->free = cancel_free_cb;
    lcp->obj = efl_ref(obj);
 
-   p = eina_promise_new(efl_loop_future_scheduler_get(obj), _cancel_triggered, lcp);
-   eina_promise_data_set_cb_set(p, _data_set);
-   eina_promise_data_free_cb_set_cb_set(p, _cancel_free_cb_set);
-   eina_promise_data_free_cb_set(p, _cancel_free);
-   return p;
+   return eina_promise_new(efl_loop_future_scheduler_get(obj), _cancel_triggered, lcp);
 }
 
 #include "efl_loop_consumer.eo.c"
index aa5ced8..c239ba6 100644 (file)
@@ -103,8 +103,6 @@ struct _Eina_Promise {
    Eina_Future *future;
    Eina_Future_Scheduler *scheduler;
    Eina_Promise_Cancel_Cb cancel;
-   Eina_Promise_Data_Set_Cb data_set_cb;
-   Eina_Promise_Data_Free_Cb_Set_Cb data_free_cb_set_cb;
    Eina_Free_Cb free_cb;
    const void *data;
 };
@@ -1118,14 +1116,7 @@ eina_promise_data_set(Eina_Promise *p,
                       void *data)
 {
    EINA_SAFETY_ON_NULL_RETURN(p);
-   if (p->data_set_cb)
-     {
-        Eina_Promise_Data_Set_Cb cb = p->data_set_cb;
-        p->data_set_cb = NULL;
-        cb(p, data);
-        p->data_set_cb = cb;
-     }
-   else p->data = data;
+   p->data = data;
 }
 
 EAPI void
@@ -1133,30 +1124,7 @@ eina_promise_data_free_cb_set(Eina_Promise *p,
                               Eina_Free_Cb free_cb)
 {
    EINA_SAFETY_ON_NULL_RETURN(p);
-   if (p->data_free_cb_set_cb)
-     {
-        Eina_Promise_Data_Free_Cb_Set_Cb cb = p->data_free_cb_set_cb;
-        p->data_free_cb_set_cb = NULL;
-        cb(p, free_cb);
-        p->data_free_cb_set_cb = cb;
-     }
-   else p->free_cb = free_cb;
-}
-
-EAPI void
-eina_promise_data_set_cb_set(Eina_Promise *p,
-                             Eina_Promise_Data_Set_Cb data_set_cb)
-{
-   EINA_SAFETY_ON_NULL_RETURN(p);
-   p->data_set_cb = data_set_cb;
-}
-
-EAPI void
-eina_promise_data_free_cb_set_cb_set(Eina_Promise *p,
-                                     Eina_Promise_Data_Free_Cb_Set_Cb data_free_cb_set_cb)
-{
-   EINA_SAFETY_ON_NULL_RETURN(p);
-   p->data_free_cb_set_cb = data_free_cb_set_cb;
+   p->free_cb = free_cb;
 }
 
 static Eina_Value
index 060d8dc..1896260 100644 (file)
@@ -187,26 +187,6 @@ struct _Eina_Future_Scheduler {
  */
 typedef void (*Eina_Promise_Cancel_Cb) (void *data, const Eina_Promise *dead_promise);
 
-/*
- * @typedef Eina_Promise_Data_Set_Cb Eina_Promise_Data_Set_Cb.
- * @ingroup eina_promise
- * 
- * A callback used to intercept eina_promise_data_set().
- * 
- * Used internally by EFL - please do not use.
- */
-typedef void (*Eina_Promise_Data_Set_Cb) (Eina_Promise *p, void *data);
-
-/*
- * @typedef Eina_Promise_Data_Free_Cb_Set_Cb Eina_Promise_Data_Free_Cb_Set_Cb.
- * @ingroup eina_promise
- * 
- * A callback used to intercept eina_promise_data_set_cb_set().
- * 
- * Used internally by EFL - please do not use.
- */
-typedef void (*Eina_Promise_Data_Free_Cb_Set_Cb) (Eina_Promise *p, Eina_Free_Cb free_cb);
-
 /**
  * @typedef Eina_Future_Success_Cb Eina_Future_Success_Cb.
  * @ingroup eina_future
@@ -657,28 +637,6 @@ EAPI void eina_promise_data_set(Eina_Promise *p, void *data) EINA_ARG_NONNULL(1)
 EAPI void eina_promise_data_free_cb_set(Eina_Promise *p, Eina_Free_Cb free_cb);
 
 /**
- * Sets a data set intercept function that can alter the behavior of
- * eina_promise_data_set(). Please do not use this as it is only used
- * internally inside EFL and may be used to slightly alter a promise
- * behavior and if used on these promises may remove EFL's override
- * 
- * @param[in] p The promise to set the data set callback on
- * @param[in] data_set_cb The callabck to intercept the data set
- */
-EAPI void eina_promise_data_set_cb_set(Eina_Promise *p, Eina_Promise_Data_Set_Cb data_set_cb);
-
-/**
- * Sets a data free cb set intercept function that can alter the behavior of
- * eina_promise_data_free_cb_set(). Please do not use this as it is only used
- * internally inside EFL and may be used to slightly alter a promise
- * behavior and if used on these promises may remove EFL's override
- * 
- * @param[in] p The promise to set the data set callback on
- * @param[in] data_free_cb_set_cb The callabck to intercept the data free cb set
- */
-EAPI void eina_promise_data_free_cb_set_cb_set(Eina_Promise *p, Eina_Promise_Data_Free_Cb_Set_Cb data_free_cb_set_cb);
-
-/**
  * Resolves a promise.
  *
  * This function schedules a resolve event in a