Hi,

I do not think that changing the operator into < is a solution.
I do not know this code but if I look at the loop there is an
event removed from maEvents each time, so naturally maEvents
should run empty sooner or later. What must happen now to make
this an endless loop is that event.pEvent->fire() later on
pushes more events to maEvents which also create more events.

It looks ok for me that firing an event can cause creation
of another event so in this case it might be that the
endless loop is actually correct since there may be always
something to do.

I just can advice to first check if the constant firing of
the events is not another problem. Second I would change
this method to make a copy of maEvents before the while
loop starts and enoty the original maEvents. In the while
loop only work on the copy, to make sure it can not grow.
After the loop is done the remaining elements of the copy
of maEvents must be merged to the old maEvents, which
could contain more elements now. The merging must be in the
correct order, pushing all remaining elements from the
maEvents copy to the beginning of the maEments stack.

Hope that helps,
Christian

liujianli wrote:
> Hi all,
> 
> I am fixing i73946.
> 
> I found the endless loop is in the void EventQueue::process_().
> The source file is slideshow\source\engine\eventqueue.cxx. 
> I think the while loop's condition caused by this issue especially 
> maEvents.top().nTime <= nCurrTime.
> 
> The maEvents.top().nTime will be same as nCurrTime all the time.
> if I change the operator into <,it will be OK.
> But I think maybe it is not trustiness.
> So can anybody give me some suggestion?
> 
> TIA,
> 
> BestRegards,
> 
> LiuJianli
> ------------------------------------
> RedFlag Chinese2000 Software Co.Ltd.
> [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to