summaryrefslogtreecommitdiffstats
path: root/audio_out.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio_out.c')
-rw-r--r--audio_out.c8
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;
}