From 73107b31218fff1ef8804602f0a4c22c8c070569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 26 Feb 2008 16:10:50 +0000 Subject: [PATCH] Make the waiting on buffer exchange interruptible; sometimes the driver manages to lock up (after some changing formats, rates, play/stops). Needs more investigation, though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24145 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/audio/hda/hda_multi_audio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/drivers/audio/hda/hda_multi_audio.c b/src/add-ons/kernel/drivers/audio/hda/hda_multi_audio.c index 9a3abfcc2b..f40c82582a 100644 --- a/src/add-ons/kernel/drivers/audio/hda/hda_multi_audio.c +++ b/src/add-ons/kernel/drivers/audio/hda/hda_multi_audio.c @@ -298,7 +298,8 @@ buffer_exchange(hda_audio_group* audioGroup, multi_buffer_info* data) } /* do playback */ - rc = acquire_sem(audioGroup->playback_stream->buffer_ready_sem); + rc = acquire_sem_etc(audioGroup->playback_stream->buffer_ready_sem, + 1, B_CAN_INTERRUPT, 0); if (rc != B_OK) { dprintf("%s: Error waiting for playback buffer to finish (%s)!\n", __func__, strerror(rc));