aboutsummaryrefslogtreecommitdiffstats
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.c')
-rw-r--r--src/player.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/player.c b/src/player.c
index c53a6ae1d..d73b0a0e1 100644
--- a/src/player.c
+++ b/src/player.c
@@ -231,6 +231,8 @@ int playerPlay(int fd, Song * song)
}
resetPlayerMetadata();
+ if (player_pid > 0 && pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
while (player_pid > 0 && pc->play)
my_usleep(1000);
@@ -243,6 +245,8 @@ int playerStop(int fd)
if (player_pid > 0 && pc->state != PLAYER_STATE_STOP) {
pc->stop = 1;
+ if (pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
while (player_pid > 0 && pc->stop)
my_usleep(1000);
}
@@ -270,6 +274,8 @@ int playerPause(int fd)
if (player_pid > 0 && pc->state != PLAYER_STATE_STOP) {
pc->pause = 1;
+ if (player_pid > 0 && pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
while (player_pid > 0 && pc->pause)
my_usleep(1000);
}
@@ -377,6 +383,8 @@ void playerCloseAudio(void)
if (playerStop(STDERR_FILENO) < 0)
return;
pc->closeAudio = 1;
+ if (pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
while (player_pid > 0 && pc->closeAudio)
my_usleep(1000);
}
@@ -422,6 +430,8 @@ void playerQueueLock(void)
PlayerControl *pc = &(getPlayerData()->playerControl);
if (player_pid > 0 && pc->queueLockState == PLAYER_QUEUE_UNLOCKED) {
+ if (pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
pc->lockQueue = 1;
while (player_pid > 0 && pc->lockQueue)
my_usleep(1000);
@@ -433,6 +443,8 @@ void playerQueueUnlock(void)
PlayerControl *pc = &(getPlayerData()->playerControl);
if (player_pid > 0 && pc->queueLockState == PLAYER_QUEUE_LOCKED) {
+ if (pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
pc->unlockQueue = 1;
while (player_pid > 0 && pc->unlockQueue)
my_usleep(1000);
@@ -464,6 +476,8 @@ int playerSeek(int fd, Song * song, float time)
resetPlayerMetadata();
pc->seekWhere = time;
pc->seek = 1;
+ if (player_pid > 0 && pc->state == PLAYER_STATE_PAUSE)
+ kill(player_pid, SIGCONT);
while (player_pid > 0 && pc->seek)
my_usleep(1000);
}