Re: [hatari-devel] SDL1 vs. SDL2 sound pausing |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: hatari-devel@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [hatari-devel] SDL1 vs. SDL2 sound pausing
- From: David Savinkoff <dsavnkff@xxxxxxxxx>
- Date: Sat, 10 Sep 2016 14:29:38 -0600 (MDT)
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telus.net; s=neo; t=1473539378; bh=8Fxbv77CxwuuWLxwX03uOaOorpjRjYIiZUTQZjG7wUU=; h=Date:From:To:In-Reply-To:Subject; b=y/x6E1Eu3v5Dr8Q1D2czo2A9r4py0CmGMPB0dwDepOBWHQyNj5qOszpsUQwD3aI7R k0aLj1PxOvYBKbQ9q2cPKysa4Nw/TpmU8SO4T1c8ocVcDgdy3/p6vkXwzyJlFsJBcj L4RDJS/ueAxqOblI4XcIKW751fTnMHF0Sf2S+84xkuKYc8NznwhTMuMV5Dh/Rm6uxz 6GD44N0RQnGqyMLZIlJyI1EfhGA3dDSFdgqyNHrkrqsl4RiBGNu9quT3+UHY7U8Vtx ehlvbeF85e9O0zc7DfkfXvjV6/p1fVWRRrc2hNprjHG2KEISM0wCgCzBPy8YWvxzhD YDukgFB9V3Wvw==
- Thread-index: /dv457VG4J5iOwK+HgrqHtmnBUdXUg==
- Thread-topic: SDL1 vs. SDL2 sound pausing
----- Thomas Huth wrote:
> Am Sat, 10 Sep 2016 13:20:12 -0600 (MDT)
> schrieb David Savinkoff:
>
> > Thomas Huth wrote:
> > > Am Sat, 10 Sep 2016 18:32:05 +0200
> > > schrieb Nicolas Pomarède:
> > >
> > > > Le 10/09/2016 à 17:45, Thomas Huth a écrit :
> > > > > Am Sat, 10 Sep 2016 17:03:16 +0200
> > > > > schrieb Jerome Vernet:
> > > > >
> > > > >> Le 10/09/2016 à 16:09, Nicolas Pomarède a écrit :
> > > > >>> printf ( "audio cbk %d %d\n" , nGeneratedSamples ,
> > > > >>> CompleteSndBufIdx )
> > > > >> You're right, nGeneratedSamples == 0 while in menus (or in
> > > > >> other thing, before emulation can be paused), and
> > > > >> CompleteSndBufIdx stay on the same value until the release the
> > > > >> menu.
> > > > >
> > > > > I guess we should simply mute audio completely if
> > > > > nGeneratedSamples is 0. Jerome, could you please try a patch
> > > > > like this:
> > > > >
> > > > > diff -r b98a852e12f2 src/audio.c
> > > > > --- a/src/audio.c Sat Sep 10 17:39:20 2016 +0200
> > > > > +++ b/src/audio.c Sat Sep 10 17:43:52 2016 +0200
> > > > > @@ -87,7 +87,13 @@
> > > > > CompleteSndBufIdx += len;
> > > > > nGeneratedSamples -= len;
> > > > > }
> > > > > - else /* Not enough samples available: */
> > > > > + else if (nGeneratedSamples == 0)
> > > > > + {
> > > > > + /* No samples - that could mean that the main
> > > > > thread has been
> > > > > + * halted. Simply mute audio to avoid annoying
> > > > > audio loops */
> > > > > + memset(pBuffer, 0, len * 4);
> > > > > + }
> > > > > + else /* Some, but not enough samples available: */
> > > > > {
> > > > > for (i = 0; i < nGeneratedSamples; i++)
> > > > > {
> ...
> > I think Thomas' patch is correct with a small modification:
> > + else if (nGeneratedSamples == 0 && emulator_paused)
>
> That won't work on OS X since Hatari has apparently no way to determine
> whether the user opened the menu or not.
>
> Thomas
>
I think it is worth 'forcing' it to work... with a new function_that_works(),
or an #ifdef OSX