From d67a7df9caadca59536e487f7d4fc6df1b33d8b7 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 4 Jan 2019 16:04:49 -0800 Subject: [PATCH] Revert "fix crashes created by "make efl_loop_promise_new a function"" 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 Differential Revision: https://phab.enlightenment.org/D7573 --- src/lib/ecore/efl_loop_consumer.c | 20 +-------------- src/lib/eina/eina_promise.c | 36 ++------------------------ src/lib/eina/eina_promise.h | 42 ------------------------------- 3 files changed, 3 insertions(+), 95 deletions(-) diff --git a/src/lib/ecore/efl_loop_consumer.c b/src/lib/ecore/efl_loop_consumer.c index 17e2dbdda2..5260931ebc 100644 --- a/src/lib/ecore/efl_loop_consumer.c +++ b/src/lib/ecore/efl_loop_consumer.c @@ -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" diff --git a/src/lib/eina/eina_promise.c b/src/lib/eina/eina_promise.c index aa5ced8ab2..c239ba6261 100644 --- a/src/lib/eina/eina_promise.c +++ b/src/lib/eina/eina_promise.c @@ -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 diff --git a/src/lib/eina/eina_promise.h b/src/lib/eina/eina_promise.h index 060d8dccf8..1896260dba 100644 --- a/src/lib/eina/eina_promise.h +++ b/src/lib/eina/eina_promise.h @@ -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 @@ -656,28 +636,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. *