cedric's ecore_job_init/shtudown patches.
SVN revision: 31972
This commit is contained in:
parent
bb28443e9a
commit
cf49928045
|
@ -35,6 +35,8 @@ extern "C" {
|
||||||
typedef void Ecore_Job; /**< A job handle */
|
typedef void Ecore_Job; /**< A job handle */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
EAPI int ecore_job_init();
|
||||||
|
EAPI int ecore_job_shutdown();
|
||||||
EAPI Ecore_Job *ecore_job_add(void (*func) (void *data), const void *data);
|
EAPI Ecore_Job *ecore_job_add(void (*func) (void *data), const void *data);
|
||||||
EAPI void *ecore_job_del(Ecore_Job *job);
|
EAPI void *ecore_job_del(Ecore_Job *job);
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,34 @@ static int _ecore_job_event_handler(void *data, int type, void *ev);
|
||||||
static void _ecore_job_event_free(void *data, void *ev);
|
static void _ecore_job_event_free(void *data, void *ev);
|
||||||
|
|
||||||
static int ecore_event_job_type = 0;
|
static int ecore_event_job_type = 0;
|
||||||
|
static int _ecore_init_job_count = 0;
|
||||||
|
static Ecore_Event_Handler* _ecore_job_handler = NULL;
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
ecore_job_init()
|
||||||
|
{
|
||||||
|
if (++_ecore_init_job_count == 1)
|
||||||
|
{
|
||||||
|
ecore_init();
|
||||||
|
ecore_event_job_type = ecore_event_type_new();
|
||||||
|
_ecore_job_handler = ecore_event_handler_add(ecore_event_job_type, _ecore_job_event_handler, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _ecore_init_job_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
ecore_job_shutdown()
|
||||||
|
{
|
||||||
|
if (--_ecore_init_job_count)
|
||||||
|
return _ecore_init_job_count;
|
||||||
|
|
||||||
|
ecore_event_handler_del(_ecore_job_handler);
|
||||||
|
_ecore_job_handler = NULL;
|
||||||
|
ecore_shutdown();
|
||||||
|
|
||||||
|
return _ecore_init_job_count;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a job to the event queue.
|
* Add a job to the event queue.
|
||||||
|
@ -24,11 +52,7 @@ ecore_job_add(void (*func) (void *data), const void *data)
|
||||||
Ecore_Job *job;
|
Ecore_Job *job;
|
||||||
|
|
||||||
if (!func) return NULL;
|
if (!func) return NULL;
|
||||||
if (!ecore_event_job_type)
|
|
||||||
{
|
|
||||||
ecore_event_job_type = ecore_event_type_new();
|
|
||||||
ecore_event_handler_add(ecore_event_job_type, _ecore_job_event_handler, NULL);
|
|
||||||
}
|
|
||||||
job = calloc(1, sizeof(Ecore_Job));
|
job = calloc(1, sizeof(Ecore_Job));
|
||||||
if (!job) return NULL;
|
if (!job) return NULL;
|
||||||
ECORE_MAGIC_SET(job, ECORE_MAGIC_JOB);
|
ECORE_MAGIC_SET(job, ECORE_MAGIC_JOB);
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
#include <Ecore_Job.h>
|
||||||
|
|
||||||
#include "Edje.h"
|
#include "Edje.h"
|
||||||
#include "edje_private.h"
|
#include "edje_private.h"
|
||||||
|
|
||||||
|
@ -21,6 +23,7 @@ edje_init(void)
|
||||||
initted++;
|
initted++;
|
||||||
if (initted == 1)
|
if (initted == 1)
|
||||||
{
|
{
|
||||||
|
ecore_job_init();
|
||||||
srand(time(NULL));
|
srand(time(NULL));
|
||||||
_edje_edd_setup();
|
_edje_edd_setup();
|
||||||
_edje_text_init();
|
_edje_text_init();
|
||||||
|
@ -40,6 +43,10 @@ edje_shutdown(void)
|
||||||
initted--;
|
initted--;
|
||||||
if (initted > 0) return initted;
|
if (initted > 0) return initted;
|
||||||
|
|
||||||
|
if (_edje_timer)
|
||||||
|
ecore_animator_del(_edje_timer);
|
||||||
|
_edje_timer = NULL;
|
||||||
|
|
||||||
_edje_file_cache_shutdown();
|
_edje_file_cache_shutdown();
|
||||||
_edje_message_shutdown();
|
_edje_message_shutdown();
|
||||||
_edje_edd_free();
|
_edje_edd_free();
|
||||||
|
@ -48,7 +55,8 @@ edje_shutdown(void)
|
||||||
_edje_text_class_members_free();
|
_edje_text_class_members_free();
|
||||||
_edje_text_class_hash_free();
|
_edje_text_class_hash_free();
|
||||||
embryo_shutdown();
|
embryo_shutdown();
|
||||||
|
ecore_job_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,12 @@ void
|
||||||
_edje_message_shutdown(void)
|
_edje_message_shutdown(void)
|
||||||
{
|
{
|
||||||
_edje_message_queue_clear();
|
_edje_message_queue_clear();
|
||||||
|
if (job_loss_timer)
|
||||||
|
ecore_timer_del(job_loss_timer);
|
||||||
|
if (job)
|
||||||
|
ecore_job_del(job);
|
||||||
job = NULL;
|
job = NULL;
|
||||||
|
job_loss_timer = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -193,12 +193,15 @@ emotion_object_init(Evas_Object *obj, const char *module_filename)
|
||||||
sd->seek_pos = 0;
|
sd->seek_pos = 0;
|
||||||
sd->len = 0;
|
sd->len = 0;
|
||||||
|
|
||||||
|
ecore_job_init();
|
||||||
|
|
||||||
if ((!sd->module) || (!sd->video))
|
if ((!sd->module) || (!sd->video))
|
||||||
{
|
{
|
||||||
if (!_emotion_module_open(module_filename, obj,
|
if (!_emotion_module_open(module_filename, obj,
|
||||||
&sd->module, &sd->video))
|
&sd->module, &sd->video))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1183,6 +1186,8 @@ _smart_del(Evas_Object * obj)
|
||||||
if (sd->progress.info) free(sd->progress.info);
|
if (sd->progress.info) free(sd->progress.info);
|
||||||
if (sd->ref.file) free(sd->ref.file);
|
if (sd->ref.file) free(sd->ref.file);
|
||||||
free(sd);
|
free(sd);
|
||||||
|
|
||||||
|
ecore_job_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue