On quarta-feira, 6 de fevereiro de 2013 10.23.25, BogDan wrote: > On Android all events are coming from another thread, and some time a few > events are not delivered by the event loop. It happens because if an event > is added to the event loop when the event loop just started to > process/deliver the events this event is not sent because the event loop > "goes to sleep" (calls the QEventDispatcherUNIX::select(...) function), my > patch prevents the call of select function if a new event was just added.
That explanation is not specific to Android. It looks like a real case for any postEvent. Therefore, this change -- as described -- must be in QtCore or nowhere at all. However, your explanation is either mistaken or incomplete. The select() call will not sleep because the pipe or eventfd will have unread data: instead, it will wake up immediately. Then the event dispatcher will realise that there are more events in the queue and will proceed to dispatch them. I don't doubt that you found a deadlock condition somehow. But I am not convinced that you understood it correctly or that you fixed it properly. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
