summaryrefslogtreecommitdiff
path: root/plugins/alsa
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/alsa')
-rw-r--r--plugins/alsa/alsa.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/plugins/alsa/alsa.c b/plugins/alsa/alsa.c
index 3ea17435..3579e9c3 100644
--- a/plugins/alsa/alsa.c
+++ b/plugins/alsa/alsa.c
@@ -625,7 +625,12 @@ palsa_thread (void *context) {
}
err = 0;
char buf[period_size * (plugin.fmt.bps>>3) * plugin.fmt.channels];
+ UNLOCK; // holding a lock here may cause deadlock in the streamer
int bytes_to_write = palsa_callback (buf, period_size * (plugin.fmt.bps>>3) * plugin.fmt.channels);
+ LOCK;
+ if (alsa_terminate) {
+ break;
+ }
if (bytes_to_write >= (plugin.fmt.bps>>3) * plugin.fmt.channels) {
UNLOCK;