|
|
|
@ -69,18 +69,18 @@ TR_eventDispatcherStart(TR_EventDispatcher this) |
|
|
|
? *(TR_Queue *)handler_queue_hv->value |
|
|
|
: NULL; |
|
|
|
|
|
|
|
if (handler_queue && ! TR_queueEmpty(handler_queue)) { |
|
|
|
TR_Queue queue_node = handler_queue->first; |
|
|
|
if (handler_queue) { |
|
|
|
size_t idx = TR_queueFirst(handler_queue); |
|
|
|
TR_EventDone done = TR_EVENT_PENDING; |
|
|
|
|
|
|
|
while (queue_node) { |
|
|
|
TR_EventHandler handler = queue_node->msg; |
|
|
|
while (idx != TR_queueLast(handler_queue)) { |
|
|
|
TR_EventHandler handler = handler_queue->data[idx]; |
|
|
|
TR_EventDone this_done; |
|
|
|
|
|
|
|
this_done = TR_eventHandlerHandleEvent(handler, event); |
|
|
|
done = TR_EVENT_DONE == done ? done : this_done; |
|
|
|
|
|
|
|
queue_node = queue_node->next; |
|
|
|
idx = idx + 1 == TR_queueSize(handler_queue) ? 0 : idx + 1; |
|
|
|
} |
|
|
|
|
|
|
|
if (TR_EVENT_DONE == done) { |
|
|
|
|