http://bugs.winehq.org/show_bug.cgi?id=28723
--- Comment #44 from Jörg Höhle hoehle@users.sourceforge.net 2011-11-11 12:15:37 CST --- Sorry for the short comment -- what I've been missing from the patches so far is a path for apps that don't care about short periods and buffers, e.g. winmm:playsound. I.e. when an app calls mmdevapi with a large duration, ALSA should not be used with a 5ms period, e.g. 200 timer interrupts per second.
BTW, I've been taking another look at several render.c test outputs sent to me. It appears that: - min. GetBufferSize (when duration=0) is 2x or 3x period (3x observed with a 5:1 card), so it's not always 20ms. - GetPosition seems 30-40ms away from padding position in shared mode, but extremely close to padding in exclusive mode. I'm unsure how to explain that. Simply say that the mixer adds 30ms? Or is that the buffer size? That may argue in favour of *out = This->held_frames in shared mode with a tiny 30ms ALSA buffer representing native's mixer latency.
BTW, about GetPosition, did you use my patch from comment #32 or something else?