Huw Davies (@huw) commented about dlls/winecoreaudio.drv/coreaudio.c:
return STATUS_SUCCESS;
}
+static NTSTATUS unix_timer_loop(void *args) +{
- struct timer_loop_params *params = args;
- struct coreaudio_stream *stream = handle_get_stream(params->stream);
- const LARGE_INTEGER delay = {{ -stream->period }};
- while(!stream->please_quit)
- {
NtDelayExecution(FALSE, &delay);
NtSetEvent(stream->event, NULL);
- }
This will cause problems for some apps. We need to keep track of the delta between the required and actual delay so that the events don't drift. See the alsa driver for how we do it there.