aboutsummaryrefslogtreecommitdiffstats
path: root/src/player.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/player.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/player.c b/src/player.c
index beff9b389..096503b19 100644
--- a/src/player.c
+++ b/src/player.c
@@ -110,11 +110,13 @@ void player_sigChldHandler(int pid, int status)
int playerInit(void)
{
+ PlayerControl *pc = &(getPlayerData()->playerControl);
int pid;
pid = player_pid;
if (pid > 0) {
kill(pid, SIGCONT);
+ pc->wait = 0;
return 0;
}
@@ -124,8 +126,6 @@ int playerInit(void)
{
clock_t start = clock();
- PlayerControl *pc = &(getPlayerData()->playerControl);
-
unblockSignals();
setSigHandlersForDecoder();
@@ -184,16 +184,22 @@ int playerInit(void)
int playerWait(int fd)
{
+ PlayerControl *pc = &(getPlayerData()->playerControl);
int pid;
+ if (pc->wait)
+ return 0;
+
if (playerStop(fd) < 0)
return -1;
playerCloseAudio();
pid = player_pid;
- if (pid > 0)
+ if (pid > 0) {
+ pc->wait = 1;
kill(pid, SIGSTOP);
+ }
return 0;
}