diff options
Diffstat (limited to 'audio_out.c')
-rw-r--r-- | audio_out.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/audio_out.c b/audio_out.c index 573dd4e..9b814a6 100644 --- a/audio_out.c +++ b/audio_out.c @@ -250,7 +250,7 @@ static int audio_out_set_parameters(struct audio_stream *stream, const char *kvp stream_out = (struct tinyalsa_audio_stream_out *) stream; - if(stream_out->device->mixer == NULL) + if(stream_out->device == NULL || stream_out->device->mixer == NULL) return -1; parms = str_parms_create_str(kvpairs); @@ -265,6 +265,8 @@ static int audio_out_set_parameters(struct audio_stream *stream, const char *kvp if(stream_out->device_current != (audio_devices_t) value) audio_out_set_route(stream_out, (audio_devices_t) value); + if(stream_out->device->ril_interface != NULL && stream_out->device->ril_interface->device_current != (audio_devices_t) value) + audio_ril_interface_set_route(stream_out->device->ril_interface, (audio_devices_t) value); str_parms_destroy(parms); @@ -422,7 +424,7 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev, LOGD("%s(%p, %d, %p, %p, %p, %p)", __func__, dev, devices, format, channels, sample_rate, stream_out); - if(dev == NULL) + if(dev == NULL || stream_out == NULL) return -EINVAL; tinyalsa_audio_device = (struct tinyalsa_audio_device *) dev; @@ -496,6 +498,8 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev, error_stream: *stream_out = NULL; + free(tinyalsa_audio_stream_out); + tinyalsa_audio_device->stream_out = NULL; return -1; } |