ecore: remove dead Ecore_Job eo object.

This commit is contained in:
Cedric BAIL 2016-05-03 13:31:16 -07:00
parent 24864af5c4
commit c1141c7b0b
6 changed files with 36 additions and 112 deletions

View File

@ -4,7 +4,6 @@
ecore_eolian_files_legacy = \
lib/ecore/ecore_timer.eo \
lib/ecore/ecore_poller.eo \
lib/ecore/ecore_job.eo \
lib/ecore/ecore_exe.eo \
lib/ecore/ecore_animator.eo

View File

@ -3076,7 +3076,7 @@ typedef struct _Ecore_Factorized_Idle Ecore_Idle_Exiter; /**< A handle for idle
/**
* @since 1.8
*/
typedef Eo Ecore_Job; /**< A job handle */
typedef struct _Ecore_Job Ecore_Job; /**< A job handle */
#define _ECORE_JOB_EO_CLASS_TYPE
/**

View File

@ -54,18 +54,6 @@ extern "C" {
*/
/**
* @ingroup Ecore_Job_Group
*
* @{
*/
#include "ecore_job.eo.h"
/**
* @}
*/
/**
* @ingroup Ecore_MainLoop_Group
*

View File

@ -361,8 +361,6 @@ EAPI Ecore_Job *ecore_job_add(Ecore_Cb func, const void *data);
*/
EAPI void *ecore_job_del(Ecore_Job *obj);
#include "ecore_job.eo.legacy.h"
/**
* @}
*/

View File

@ -9,10 +9,6 @@
#include "Ecore.h"
#include "ecore_private.h"
#define MY_CLASS ECORE_JOB_CLASS
#define MY_CLASS_NAME "Ecore_Job"
static Eina_Bool _ecore_job_event_handler(void *data,
int type,
void *ev);
@ -22,9 +18,7 @@ static void _ecore_job_event_free(void *data,
static int ecore_event_job_type = 0;
static Ecore_Event_Handler *_ecore_job_handler = NULL;
typedef struct _Ecore_Job_Data Ecore_Job_Data;
struct _Ecore_Job_Data
struct _Ecore_Job
{
Ecore_Event *event;
Ecore_Cb func;
@ -49,65 +43,48 @@ EAPI Ecore_Job *
ecore_job_add(Ecore_Cb func,
const void *data)
{
Ecore_Job *job = eo_add(MY_CLASS, _ecore_parent, ecore_job_constructor(eo_self, func, data));
return job;
}
Ecore_Job *job;
EOLIAN static void
_ecore_job_constructor(Eo *obj, Ecore_Job_Data *job, Ecore_Cb func, const void *data)
{
if (EINA_UNLIKELY(!eina_main_loop_is()))
{
EINA_MAIN_LOOP_CHECK_RETURN;
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
}
eo_manual_free_set(obj, EINA_TRUE);
if (!func)
{
ERR("callback function must be set up for an object of class: '%s'", MY_CLASS_NAME);
return;
}
job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, obj);
if (!job->event)
{
ERR("no event was assigned to object '%p' of class '%s'", obj, MY_CLASS_NAME);
return;
}
job->func = func;
job->data = (void *)data;
}
EAPI void *
ecore_job_del(Ecore_Job *obj)
{
void *data;
if (!obj) return NULL;
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
Ecore_Job_Data *job = eo_data_scope_get(obj, MY_CLASS);
data = job->data;
ecore_event_del(job->event);
eo_parent_set(obj, NULL);
return data;
}
EOLIAN static void
_ecore_job_eo_base_destructor(Eo *obj, Ecore_Job_Data *_pd EINA_UNUSED)
{
/*FIXME: check if ecore_event_del should be called from here*/
eo_destructor(eo_super(obj, MY_CLASS));
}
EOLIAN static Eo *
_ecore_job_eo_base_finalize(Eo *obj, Ecore_Job_Data *pd)
{
if (!pd->func)
{
ERR("Callback function must be set up for an Ecore_Job object");
return NULL;
}
return eo_finalize(eo_super(obj, MY_CLASS));
job = calloc(1, sizeof (Ecore_Job));
if (!job) return NULL;
job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, job);
if (!job->event)
{
ERR("No event was assigned to Ecore_Job '%p'", job);
free(job);
return NULL;
}
job->func = func;
job->data = (void *)data;
return job;
}
EAPI void *
ecore_job_del(Ecore_Job *job)
{
void *data;
if (!job) return NULL;
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
data = job->data;
ecore_event_del(job->event);
return data;
}
static Eina_Bool
@ -115,7 +92,7 @@ _ecore_job_event_handler(void *data EINA_UNUSED,
int type EINA_UNUSED,
void *ev)
{
Ecore_Job_Data *job;
Ecore_Job *job;
job = ev;
job->func(job->data);
@ -126,14 +103,5 @@ static void
_ecore_job_event_free(void *data,
void *job EINA_UNUSED)
{
eo_parent_set(data, NULL);
Ecore_Job *obj = data;
if (eo_destructed_is(obj))
eo_manual_free(obj);
else
eo_manual_free_set(obj, EINA_FALSE);
ecore_job_del(data);
}
#include "ecore_job.eo.c"

View File

@ -1,29 +0,0 @@
import ecore_types;
class Ecore.Job (Eo.Base)
{
[[Ecore Jobs are queued until the main loop dealt with the current event.
Jobs are processed by the main loop similarly to events. They also will
be executed in the order in which they were added.
]]
eo_prefix: ecore_job;
methods {
constructor {
[[Constructor.]]
legacy: null;
params {
@in func: Ecore_Cb; [[Ecore job to be queued callback function.]]
@in data: const(void)*; [[Private data passed to callback function.]]
}
}
}
implements {
Eo.Base.destructor;
Eo.Base.finalize;
}
constructors {
.constructor;
}
}