From 9e5eed53b1f4ff6755a2d9c0ddc5b25b42ca2188 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 14 Jan 2005 04:50:29 +0000 Subject: [PATCH] working on fixing job loss... SVN revision: 12962 --- legacy/edje/src/lib/edje_message_queue.c | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index 250b5a46cd..eb484c3884 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -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;