http://bugs.winehq.org/show_bug.cgi?id=33045
--- Comment #7 from Andrew Eikum aeikum@codeweavers.com 2013-03-05 09:51:58 CST --- Created attachment 43819 --> http://bugs.winehq.org/attachment.cgi?id=43819 Truncate patch and tests
I'm attaching a patchset here. The first patch truncates non-block-aligned headers. The second patch is a test which demonstrates that that's not completely correct.
Swapping the header order seems to matter. The below is with no underruns.
Header 1: 1/4s - 1 byte Header 2: 1/4s + 1 byte The callback for Header 2 is never called, position is (1/2s - 1 byte), and waveOutClose() gives STILLPLAYING.
But if you switch them around: Header 1: 1/4s + 1 byte Header 2: 1/4s - 1 byte Both headers get callbacks, position is 1/2s, and waveOutClose() works normally.
If you write either header alone, the callback occurs and waveOutClose() operates normally.