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)
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"
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;
};
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
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
*/
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
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