|
|
@ -57,16 +57,8 @@ TR_eventDispatcherStart(TR_EventDispatcher this) |
|
|
int evtid = TR_EVD_CLIENT == this->mode |
|
|
int evtid = TR_EVD_CLIENT == this->mode |
|
|
? TR_DISPATCHER_EVENT_USER_WAIT |
|
|
? TR_DISPATCHER_EVENT_USER_WAIT |
|
|
: TR_DISPATCHER_EVENT_DATA_WAIT; |
|
|
: TR_DISPATCHER_EVENT_DATA_WAIT; |
|
|
int * toutptr = NULL; |
|
|
|
|
|
|
|
|
|
|
|
if (! TR_queueEmpty(this->pending)) { |
|
|
|
|
|
toutptr = &ZERO; |
|
|
|
|
|
TR_delete(this->events); |
|
|
|
|
|
this->events = this->pending; |
|
|
|
|
|
this->pending = TR_new(TR_Queue); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
event = TR_eventSubjectEmit((TR_EventSubject)this, evtid, toutptr); |
|
|
|
|
|
|
|
|
event = TR_eventSubjectEmit((TR_EventSubject)this, evtid, NULL); |
|
|
} else { |
|
|
} else { |
|
|
event = TR_queueGet(this->events); |
|
|
event = TR_queueGet(this->events); |
|
|
} |
|
|
} |
|
|
@ -98,7 +90,7 @@ TR_eventDispatcherStart(TR_EventDispatcher this) |
|
|
if (TR_EVENT_DONE == done) { |
|
|
if (TR_EVENT_DONE == done) { |
|
|
TR_delete(event); |
|
|
TR_delete(event); |
|
|
} else { |
|
|
} else { |
|
|
TR_eventDispatcherEnqueuePending(this, event); |
|
|
|
|
|
|
|
|
TR_eventDispatcherEnqueueEvent(this, event); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|