Re: [hatari-devel] SDL1 vs. SDL2 sound pausing

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Am Sat, 10 Sep 2016 13:20:12 -0600 (MDT)
schrieb David Savinkoff <dsavnkff@xxxxxxxxx>:

> 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



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/