winmm/wineoss: use DSP_POST to flush the frag buffers
Jeremy White
jwhite at codeweavers.com
Wed Feb 23 07:30:11 CST 2005
Don't apply this; more survey of alternate sound cards shows
that DSP_POST does not work as well as advertised everywhere.
Jer
Jeremy White wrote:
> When we get down to the last fragment or two in our output
> to the DSP, we should use the SND_DSP_POST ioctl to let the
> sound card know to flush those fragments. This allows us to
> precisely know when the buffer is empty, and fixes another
> set of winmm tests.
>
>
> ------------------------------------------------------------------------
>
> Index: dlls/winmm/wineoss/audio.c
> ===================================================================
> RCS file: /home/wine/wine/dlls/winmm/wineoss/audio.c,v
> retrieving revision 1.152
> diff -u -r1.152 audio.c
> --- dlls/winmm/wineoss/audio.c 28 Jan 2005 17:21:07 -0000 1.152
> +++ dlls/winmm/wineoss/audio.c 22 Feb 2005 22:17:22 -0000
> @@ -1665,12 +1665,13 @@
>
> /* input queue empty and output buffer with less than one fragment to play
> * actually some cards do not play the fragment before the last if this one is partially feed
> - * so we need to test for full the availability of 2 fragments
> + * so we need to test for full the availability of 2 fragments ; the DSP_POST ioctl
> + * will let the card know to play out the rest of the fragments
> */
> if (!wwo->lpPlayPtr && wwo->dwBufferSize < availInQ + 2 * wwo->dwFragmentSize &&
> !wwo->bNeedPost) {
> - TRACE("Run out of wavehdr:s...\n");
> - return INFINITE;
> + TRACE("Run out of wavehdr's, requesting a POST...\n");
> + wwo->bNeedPost = TRUE;
> }
>
> /* no more room... no need to try to feed */
More information about the wine-devel
mailing list