summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYossi Kantor <yossi.kantor@samsung.com>2014-03-23 16:02:19 +0200
committerDaniel Zaoui <daniel.zaoui@samsung.com>2014-03-24 08:14:31 +0200
commitf9a54462c0a21f12b37edac679b066a1b2e274d2 (patch)
tree7033880d49ae1035ba6e86e7b318d0d7f8c4e82e
parent5584564531b1d492199db42bfea96ae07178f79d (diff)
downloadefl-f9a54462c0a21f12b37edac679b066a1b2e274d2.tar.gz
Eolian: Integration of Ecore Job
-rw-r--r--src/Makefile_Ecore.am12
-rw-r--r--src/lib/ecore/Ecore_Eo.h3
-rw-r--r--src/lib/ecore/ecore_job.c57
-rw-r--r--src/lib/ecore/ecore_job.eo17
4 files changed, 39 insertions, 50 deletions
diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am
index 41099e4a81..c28161f7a1 100644
--- a/src/Makefile_Ecore.am
+++ b/src/Makefile_Ecore.am
@@ -5,12 +5,15 @@ BUILT_SOURCES += \
lib/ecore/ecore_timer.eo.c \
lib/ecore/ecore_timer.eo.h \
lib/ecore/ecore_poll.eo.c \
- lib/ecore/ecore_poll.eo.h
-
+ lib/ecore/ecore_poll.eo.h \
+ lib/ecore/ecore_job.eo.c \
+ lib/ecore/ecore_job.eo.h
+
ecoreeolianfilesdir = $(datadir)/eolian/include/ecore-@VMAJ@
ecoreeolianfiles_DATA = \
lib/ecore/ecore_timer.eo \
- lib/ecore/ecore_poll.eo
+ lib/ecore/ecore_poll.eo \
+ lib/ecore/ecore_job.eo
EXTRA_DIST += \
${ecoreeolianfiles_DATA}
@@ -27,7 +30,8 @@ lib/ecore/Ecore_Getopt.h
nodist_installed_ecoremainheaders_DATA = \
lib/ecore/ecore_timer.eo.h \
- lib/ecore/ecore_poll.eo.h
+ lib/ecore/ecore_poll.eo.h \
+ lib/ecore/ecore_job.eo.h
lib_ecore_libecore_la_SOURCES = \
lib/ecore/ecore.c \
diff --git a/src/lib/ecore/Ecore_Eo.h b/src/lib/ecore/Ecore_Eo.h
index a1bc073f0e..739deb9bee 100644
--- a/src/lib/ecore/Ecore_Eo.h
+++ b/src/lib/ecore/Ecore_Eo.h
@@ -344,6 +344,8 @@ enum
*
* @{
*/
+#include "ecore_job.eo.h"
+#if 0
#define ECORE_JOB_CLASS ecore_job_class_get()
const Eo_Class *ecore_job_class_get(void) EINA_CONST;
@@ -370,6 +372,7 @@ enum
*/
#define ecore_job_constructor(func, data) ECORE_JOB_ID(ECORE_JOB_SUB_ID_CONSTRUCTOR), EO_TYPECHECK(Ecore_Cb, func), EO_TYPECHECK(const void *, data)
+#endif
/**
* @}
*/
diff --git a/src/lib/ecore/ecore_job.c b/src/lib/ecore/ecore_job.c
index ce86bbd450..dfa00720b2 100644
--- a/src/lib/ecore/ecore_job.c
+++ b/src/lib/ecore/ecore_job.c
@@ -13,8 +13,6 @@
#define MY_CLASS_NAME "Ecore_Job"
-EAPI Eo_Op ECORE_JOB_BASE_ID = EO_NOOP;
-
static Eina_Bool _ecore_job_event_handler(void *data,
int type,
void *ev);
@@ -24,9 +22,9 @@ 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_Private_Data Ecore_Job_Private_Data;
+typedef struct _Ecore_Job_Data Ecore_Job_Data;
-struct _Ecore_Job_Private_Data
+struct _Ecore_Job_Data
{
Ecore_Event *event;
Ecore_Cb func;
@@ -71,12 +69,9 @@ ecore_job_add(Ecore_Cb func,
return job;
}
-static void
-_job_constructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_job_constructor(Eo *obj, Ecore_Job_Data *job, Ecore_Cb func, const void *data)
{
- Ecore_Cb func = va_arg(*list, Ecore_Cb);
- const void *data = va_arg(*list, const void *);
-
if (EINA_UNLIKELY(!eina_main_loop_is()))
{
eo_error_set(obj);
@@ -92,8 +87,6 @@ _job_constructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
return;
}
- Ecore_Job_Private_Data *job = _pd;
-
job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, obj);
if (!job->event)
{
@@ -105,8 +98,8 @@ _job_constructor(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
job->data = (void *)data;
}
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_ecore_job_eo_base_constructor(Eo *obj, Ecore_Job_Data *_pd EINA_UNUSED)
{
eo_error_set(obj);
ERR("only custom constructor can be used with '%s' class", MY_CLASS_NAME);
@@ -124,15 +117,15 @@ ecore_job_del(Ecore_Job *obj)
if (!obj) return NULL;
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
- Ecore_Job_Private_Data *job = eo_data_scope_get(obj, MY_CLASS);
+ Ecore_Job_Data *job = eo_data_scope_get(obj, MY_CLASS);
data = job->data;
ecore_event_del(job->event);
eo_do(obj, eo_parent_set(NULL));
return data;
}
-static void
-_destructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+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_do_super(obj, MY_CLASS, eo_destructor());
@@ -147,7 +140,7 @@ _ecore_job_event_handler(void *data EINA_UNUSED,
int type EINA_UNUSED,
void *ev)
{
- Ecore_Job_Private_Data *job;
+ Ecore_Job_Data *job;
job = ev;
job->func(job->data);
@@ -168,32 +161,4 @@ _ecore_job_event_free(void *data,
eo_manual_free_set(obj, EINA_FALSE);
}
-static void
-_class_constructor(Eo_Class *klass)
-{
- const Eo_Op_Func_Description func_desc[] = {
- EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
- EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
- EO_OP_FUNC(ECORE_JOB_ID(ECORE_JOB_SUB_ID_CONSTRUCTOR), _job_constructor),
- EO_OP_FUNC_SENTINEL
- };
-
- eo_class_funcs_set(klass, func_desc);
-}
-
-static const Eo_Op_Description op_desc[] = {
- EO_OP_DESCRIPTION(ECORE_JOB_SUB_ID_CONSTRUCTOR, "Add a job to the event queue."),
- EO_OP_DESCRIPTION_SENTINEL
-};
-static const Eo_Class_Description class_desc = {
- EO_VERSION,
- MY_CLASS_NAME,
- EO_CLASS_TYPE_REGULAR,
- EO_CLASS_DESCRIPTION_OPS(&ECORE_JOB_BASE_ID, op_desc, ECORE_JOB_SUB_ID_LAST),
- NULL,
- sizeof(Ecore_Job_Private_Data),
- _class_constructor,
- NULL
-};
-
-EO_DEFINE_CLASS(ecore_job_class_get, &class_desc, EO_BASE_CLASS, NULL);
+#include "ecore_job.eo.c"
diff --git a/src/lib/ecore/ecore_job.eo b/src/lib/ecore/ecore_job.eo
new file mode 100644
index 0000000000..381ae10764
--- /dev/null
+++ b/src/lib/ecore/ecore_job.eo
@@ -0,0 +1,17 @@
+class Ecore_Job (Eo_Base)
+{
+ eo_prefix: ecore_job;
+ constructors {
+ constructor {
+ /*@ Contructor. */
+ params {
+ @in Ecore_Cb func;
+ @in const void *data;
+ }
+ }
+ }
+ implements {
+ Eo_Base::constructor;
+ Eo_Base::destructor;
+ }
+} \ No newline at end of file