http://bugs.winehq.org/show_bug.cgi?id=28622
--- Comment #56 from Jörg Höhle hoehle@users.sourceforge.net 2012-10-12 05:51:23 CDT ---
So if [...] then avail_update() [...] That means it never reports at least one period available, and winealsa never writes.
Somehow I find it good that you analysed the PA bug in such detail. OTOH, if both of us had spent that many hours fixing PA/alsa-plugins instead of trying to find a work-around, perhaps many people would be pleased, including us.
Still, I do not agree with introducing a broken design into our drivers. What I agree with is:
Try and detect statically ("is this the pulse plugin"?) or dynamically broken drivers and enable the work-around for those and only those.
Dynamic detection may include observing that the driver never reports at least one period available despite several 10ms periods passing by. I myself remember observing PA constantly returning 1 byte free or some such nonsense.
Additionally, if you use the file plugin, then there is no rate limiter at all.
That's a very interesting case I did not consider. It would be covered by dynamic detection of abornal behaviour.
Don't let broken drivers impact treatment of working drivers.
BTW, to anybody reading this, I'd appreciate feedback about Colin Guthrie's tsched=0 suggestion https://bugs.freedesktop.org/show_bug.cgi?id=46296#c3