@ -1562,35 +1562,27 @@ size_t audio_generic_read(HWVoiceIn *hw, void *buf, size_t size)
return total ;
}
static int audio_driver_init ( AudioState * s , struct audio_driver * drv ,
Audiodev * dev , Error * * errp )
static bool audio_driver_init ( AudioState * s , struct audio_driver * drv ,
Audiodev * dev , Error * * errp )
{
Error * local_err = NULL ;
s - > drv_opaque = drv - > init ( dev , & local_err ) ;
if ( s - > drv_opaque ) {
if ( ! drv - > pcm_ops - > get_buffer_in ) {
drv - > pcm_ops - > get_buffer_in = audio_generic_get_buffer_in ;
drv - > pcm_ops - > put_buffer_in = audio_generic_put_buffer_in ;
}
if ( ! drv - > pcm_ops - > get_buffer_out ) {
drv - > pcm_ops - > get_buffer_out = audio_generic_get_buffer_out ;
drv - > pcm_ops - > put_buffer_out = audio_generic_put_buffer_out ;
}
s - > drv_opaque = drv - > init ( dev , errp ) ;
if ( ! s - > drv_opaque ) {
return false ;
}
audio_init_nb_voices_out ( s , drv , 1 ) ;
audio_init_nb_voices_in ( s , drv , 0 ) ;
s - > drv = drv ;
return 0 ;
} else {
if ( local_err ) {
error_propagate ( errp , local_err ) ;
} else {
error_setg ( errp , " Could not init `%s' audio driver " , drv - > name ) ;
}
return - 1 ;
if ( ! drv - > pcm_ops - > get_buffer_in ) {
drv - > pcm_ops - > get_buffer_in = audio_generic_get_buffer_in ;
drv - > pcm_ops - > put_buffer_in = audio_generic_put_buffer_in ;
}
if ( ! drv - > pcm_ops - > get_buffer_out ) {
drv - > pcm_ops - > get_buffer_out = audio_generic_get_buffer_out ;
drv - > pcm_ops - > put_buffer_out = audio_generic_put_buffer_out ;
}
audio_init_nb_voices_out ( s , drv , 1 ) ;
audio_init_nb_voices_in ( s , drv , 0 ) ;
s - > drv = drv ;
return true ;
}
static void audio_vm_change_state_handler ( void * opaque , bool running ,
@ -1748,7 +1740,7 @@ static AudioState *audio_init(Audiodev *dev, Error **errp)
drvname = AudiodevDriver_str ( dev - > driver ) ;
driver = audio_driver_lookup ( drvname ) ;
if ( driver ) {
done = ! audio_driver_init ( s , driver , dev , errp ) ;
done = audio_driver_init ( s , driver , dev , errp ) ;
} else {
error_setg ( errp , " Unknown audio driver `%s' " , drvname ) ;
}
@ -1768,7 +1760,7 @@ static AudioState *audio_init(Audiodev *dev, Error **errp)
g_free ( e ) ;
drvname = AudiodevDriver_str ( dev - > driver ) ;
driver = audio_driver_lookup ( drvname ) ;
if ( ! audio_driver_init ( s , driver , dev , NULL ) ) {
if ( audio_driver_init ( s , driver , dev , NULL ) ) {
break ;
}
qapi_free_Audiodev ( dev ) ;