[RFC/RFH] winmm:wave hang fix question (commit 717df5b2972b3cb998ca5a43279ae2283b117eaa) [bug 15559]
Chris Robinson
chris.kcat at gmail.com
Fri Nov 21 12:56:41 CST 2008
On Friday 21 November 2008 10:26:19 am Reece Dunn wrote:
> I want to submit the following patch to revert the part of the patch
> that caused the regression and fix some of the tracing. I have been
> using this patch on Cepstral SwiftTalker without issue and have tested
> it also with the game Azguard Defense.
>
> I am submitting this here and not to wine-patches initially, as I
> would like to understand what the fix was actually fixing and (based
> on the test history still showing timeouts) whether it actually fixes
> the issue it was trying to.
Hi Reese,
As far as I understand, the issue is that winealsa uses the delay value to
determine how much data is unplayed in the pcm buffer, and it expects the
delay to be 0 when it's empty. The problem is, snd_pcm_delay measures the
time it would take for the next sample written to get through the DAC, which
is only marginally related, and may not get down to 0 (depending on the
backend, there may always be some delay even if the next samples written get
played right away).
The proper way to fix this, AFAIK from the conclusion on IRC, would be to
subtract the snd_pcm_avail_update() value from the total pcm buffer size, as
a way to determine how much is unplayed in the buffer instead of abusing
snd_pcm_delay.
More information about the wine-devel
mailing list