On Mon, Mar 19, 2007 at 03:30:33PM -0400, Rich Rattanni wrote: > On 3/19/07, Takashi Iwai <tiwai@xxxxxxx> wrote: > > At Mon, 19 Mar 2007 12:31:16 -0400, > > Rich Rattanni wrote: > > > > > > All: > > > > > > I have noticed a strange behaviour in the ALSA driver that seems to be > > > occur after initiating a power standby and resume. I am working on an > > > application that uses FusionSound to playback OGG audio files. When > > > the application recognizes it is idle, it tells the OS to enter > > > standby mode. Upon resuming from standby, the ALSA API call made by > > > fusionsound no longer acts as a blocking read, instead it returns > > > immediately. I have confirmed this with Denis Oliver Kropp of the > > > DirectFB / FusionSound project. He suggested that the ALSA driver > > > should be repaired to prevent this problem from occuring. > > > > It's not clear what is happening there. > > Do you have a small testcase? > > > > When the suspend/resume happens, the apps is usually requested to call > > snd_pcm_resume() and/or snd_pcm_prepare() appropriately to reset the > > stream. Otherwise the PCM status is kept as SUSPENDED. <snip> > > static void > device_write( void *device_data, void *samples, unsigned int size ) > { > AlsaDeviceData *data = device_data; > snd_pcm_uframes_t frames = size; > snd_pcm_sframes_t r; > u8 *src; > > src = samples; > while (frames) { > r = snd_pcm_writei( data->handle, src, frames ); Maybe we just need to add something like this here? + if (r == -ESTRPIPE) { + while ((r = snd_pcm_resume( data->handle )) == -EAGAIN) + sleep( 1 ); + } > if (r < 0) { > r = snd_pcm_prepare( data->handle ); > if (r < 0) { > D_WARN( "FusionSound/Device/ALSA: snd_pcm_writei() > failed: %s\n", > snd_strerror( r ) ); > break; > } > continue; > } > frames -= r; > src += snd_pcm_frames_to_bytes( data->handle, r ); > } > } -- Ville Syrjälä syrjala@xxxxxx http://www.sci.fi/~syrjala/ ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/alsa-devel