Hi Dan, 2008/7/23 Dan Hipschman <[EMAIL PROTECTED]>: > This isn't the most efficient implementation, but it works, and it should > not be difficult to tweak. Hence, I'd rather get this version in and add > the optimizations one at a time, in little patches. "Get it working first..."
Yes, I think you're right. I don't think it will be too hard to change the architecture of this to that of my suggestions. However, I have one minor nit. > +static void WINAPI timer_queue_thread_proc(LPVOID p) > +{ > + struct timer_queue *q = p; > + ULONG timeout_ms; > + BOOL done; > + > + timeout_ms = INFINITE; > + while (!q->quit) > + { > + LARGE_INTEGER timeout; > + DWORD ret = NtWaitForSingleObject(q->event, FALSE, > + get_nt_timeout(&timeout, > timeout_ms)); This should be NTSTATUS. > + > + if (ret == STATUS_TIMEOUT) > + queue_timer_expire_next(q); > + > + RtlEnterCriticalSection(&q->cs); > + timeout_ms = timer_queue_update(q); > + RtlLeaveCriticalSection(&q->cs); > + } -- Rob Shearman