working on fixing job loss...

SVN revision: 12962
This commit is contained in:
Carsten Haitzler 2005-01-14 04:50:29 +00:00
parent ff96904faa
commit 9e5eed53b1
1 changed files with 26 additions and 5 deletions

View File

@ -3,6 +3,7 @@
#include "edje_private.h"
static Ecore_Job *job = NULL;
static Ecore_Timer *job_loss_timer = NULL;
static Evas_List *msgq = NULL;
static Evas_List *tmp_msgq = NULL;
@ -88,8 +89,28 @@ _edje_dummy_timer(void *data)
static void
_edje_job(void *data)
{
// printf("_edje_job()\n");
job = NULL;
if (job_loss_timer)
{
ecore_timer_del(job_loss_timer);
job_loss_timer = NULL;
}
_edje_message_queue_process();
// printf("_edje_job() END\n");
}
static int
_edje_job_loss_timer(void *data)
{
job_loss_timer = NULL;
if (job)
{
// printf("!!!!!!!!! EDJE!!! EEEK! lost a job!\n");
// printf("!!! job = %p\n", job);
job = NULL;
}
return 0;
}
void
@ -253,12 +274,12 @@ _edje_message_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, v
int i;
unsigned char *msg = NULL;
/* FIXME: for some reason we lose a job event along the way when in e17 */
/* we delete a border */
/* if (!job) */
if (!job)
{
/* job = */
ecore_job_add(_edje_job, NULL);
// printf("no job... add\n");
job = ecore_job_add(_edje_job, NULL);
if (job_loss_timer) ecore_timer_del(job_loss_timer);
job_loss_timer = ecore_timer_add(0.25, _edje_job_loss_timer, NULL);
}
em = _edje_message_new(ed, queue, type, id);
if (!em) return;