From 847ca4193e3fbc5b27285979888ab364bbf1792e Mon Sep 17 00:00:00 2001 From: Adam Simpkins Date: Wed, 9 Jan 2013 11:52:01 -0800 Subject: Add play and pause commands Add commands that always play and always pause, in addition to the current toggle pause command. Closes #342. --- src/ui_act.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/ui_act.c') diff --git a/src/ui_act.c b/src/ui_act.c index 70fbc9a..8d9ac09 100644 --- a/src/ui_act.c +++ b/src/ui_act.c @@ -1,5 +1,5 @@ /* -Copyright (c) 2008-2012 +Copyright (c) 2008-2013 Lars-Dominik Braun Permission is hereby granted, free of charge, to any person obtaining a copy @@ -49,9 +49,9 @@ THE SOFTWARE. static inline void BarUiDoSkipSong (struct audioPlayer *player) { assert (player != NULL); - player->doQuit = 1; - /* unlocking an unlocked mutex is forbidden by some implementations */ - pthread_mutex_trylock (&player->pauseMutex); + pthread_mutex_lock (&player->pauseMutex); + player->doQuit = true; + pthread_cond_broadcast (&player->pauseCond); pthread_mutex_unlock (&player->pauseMutex); } @@ -335,13 +335,31 @@ BarUiActCallback(BarUiActSkipSong) { BarUiDoSkipSong (&app->player); } +/* play + */ +BarUiActCallback(BarUiActPlay) { + pthread_mutex_lock (&app->player.pauseMutex); + app->player.doPause = false; + pthread_cond_broadcast (&app->player.pauseCond); + pthread_mutex_unlock (&app->player.pauseMutex); +} + /* pause */ BarUiActCallback(BarUiActPause) { - /* already locked => unlock/unpause */ - if (pthread_mutex_trylock (&app->player.pauseMutex) == EBUSY) { - pthread_mutex_unlock (&app->player.pauseMutex); - } + pthread_mutex_lock (&app->player.pauseMutex); + app->player.doPause = true; + pthread_cond_broadcast (&app->player.pauseCond); + pthread_mutex_unlock (&app->player.pauseMutex); +} + +/* toggle pause + */ +BarUiActCallback(BarUiActTogglePause) { + pthread_mutex_lock (&app->player.pauseMutex); + app->player.doPause = !app->player.doPause; + pthread_cond_broadcast (&app->player.pauseCond); + pthread_mutex_unlock (&app->player.pauseMutex); } /* rename current station @@ -483,7 +501,7 @@ BarUiActCallback(BarUiActSelectQuickMix) { /* quit */ BarUiActCallback(BarUiActQuit) { - app->doQuit = 1; + app->doQuit = true; BarUiDoSkipSong (&app->player); } -- cgit v1.2.3