From f6dffd1822404522b8354ac453a911a0d98bfc61 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Wed, 16 May 2012 14:18:27 +0200 Subject: Fix player thread teardown/signals on OS X MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1) Realtime signals don’t exist in OS X 2) libao apparently locks a mutex in ao_play, which is locked again in ao_close and causes a deadlock Closes #256, although I’m considering the option of partially reverting 7df9371491e96a99c1e463f7787aede352ac5a37, as this introduces more nasty behavior than it solves. --- src/ui_act.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/ui_act.c') diff --git a/src/ui_act.c b/src/ui_act.c index 2cc3197..a4fc1f7 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -54,6 +54,10 @@ static inline void BarUiDoSkipSong (struct audioPlayer *player) { assert (player != NULL); if (player->mode != PLAYER_FINISHED_PLAYBACK && player->mode != PLAYER_FREED) { + /* unpause to make sure thread is able to reach cancellation point */ + if (player->paused) { + pthread_kill (player->thread, BAR_PLAYER_SIGCONT); + } pthread_cancel (player->thread); } } -- cgit v1.2.3