On Thu Jun 13 19:06:57 2024 +0000, Alfred Agrell wrote:
Then let's switch commit 6 to the simplest possible implementation that satisfies the game, to minimize the amount of work to undo when implementing the correct fix.
I don't think TryEnterCriticalSection() is the right solution, no. I wanted to figure out whether avidec is supposed to do any QC at all, or if v7 was the right solution, or if I could somehow find some way to prove something more interesting about native behaviour (which I unfortunately couldn't find a way to do).
I did some testing with native, and while our implementation isn't correct (in particular, native does not use ICDECOMPRESS_HURRYUP), it does look like native will drop samples when Late is high enough.
So we do need to keep that logic, I think. I would advocate either:
* revert to v7, with the separate lock,
* just get rid of the lock and rely on TSO guaranteed by Windows.
I don't have a preference.