working on fixign this weird job loss....

SVN revision: 12961
This commit is contained in:
Carsten Haitzler 2005-01-14 04:50:08 +00:00
parent e7ff787ea6
commit ff96904faa
2 changed files with 17 additions and 2 deletions

View File

@ -340,7 +340,10 @@ _ecore_event_call(void)
e = (Ecore_Event *)ll;
if (!ef->func_filter(ef->loop_data, ef->data,
e->type, e->event))
ecore_event_del(e);
{
// printf("FILTER SAID TO DEL ev %p\n", e->event);
ecore_event_del(e);
}
}
if (ef->func_end)
ef->func_end(ef->data, ef->loop_data);
@ -363,6 +366,7 @@ _ecore_event_call(void)
}
event_filters_delete_me = 0;
}
// printf("EVENT BATCH...\n");
for (l = (Ecore_Oldlist *)events; l; l = l->next)
{
Ecore_Oldlist *ll;
@ -376,6 +380,7 @@ _ecore_event_call(void)
handle_count = 0;
ecore_raw_event_type = e->type;
ecore_raw_event_event = e->event;
// printf("HANDLE ev type %i, %p\n", e->type, e->event);
for (ll = (Ecore_Oldlist *)event_handlers; ll; ll = ll->next)
{
Ecore_Event_Handler *eh;

View File

@ -4,6 +4,7 @@
#include "Ecore_Job.h"
static int _ecore_job_event_handler(void *data, int type, void *ev);
static void _ecore_job_event_free(void *data, void *ev);
static int ecore_event_job_type = 0;
@ -31,7 +32,7 @@ ecore_job_add(void (*func) (void *data), const void *data)
job = calloc(1, sizeof(Ecore_Job));
if (!job) return NULL;
ECORE_MAGIC_SET(job, ECORE_MAGIC_JOB);
job->event = ecore_event_add(ecore_event_job_type, job, NULL, NULL);
job->event = ecore_event_add(ecore_event_job_type, job, _ecore_job_event_free, NULL);
if (!job->event)
{
free(job);
@ -74,3 +75,12 @@ _ecore_job_event_handler(void *data, int type, void *ev)
job->func(job->data);
return 0;
}
static void
_ecore_job_event_free(void *data, void *ev)
{
Ecore_Job *job;
job = ev;
free(ev);
}