diff options
Diffstat (limited to 'plugins/alsa')
-rw-r--r-- | plugins/alsa/alsa.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/plugins/alsa/alsa.c b/plugins/alsa/alsa.c index 31c5c3e0..c0be941f 100644 --- a/plugins/alsa/alsa.c +++ b/plugins/alsa/alsa.c @@ -468,11 +468,14 @@ palsa_setformat (ddb_waveformat_t *fmt) { state = OUTPUT_STATE_STOPPED; snd_pcm_drop (audio); int ret = palsa_set_hw_params (fmt); - UNLOCK; if (ret < 0) { trace ("palsa_change_rate: impossible to set requested format\n"); + // even if it failed -- copy the format + memcpy (&plugin.fmt, fmt, sizeof (ddb_waveformat_t)); + UNLOCK; return -1; } + UNLOCK; trace ("new format %dbit %s %dch %dHz channelmask=%X\n", plugin.fmt.bps, plugin.fmt.is_float ? "float" : "int", plugin.fmt.channels, plugin.fmt.samplerate, plugin.fmt.channelmask); switch (s) { |