diff options
author | Eric Wong <normalperson@yhbt.net> | 2007-08-27 09:36:11 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2007-08-27 09:36:11 +0000 |
commit | f18e52417639518545ebce3649f3ce3450bcb01c (patch) | |
tree | 7a6478788caa20347b76adae29da2e36d43f07ea /src/player.c | |
parent | 0f2e9ee6623ab30c190dfc5c575922af1990c9d9 (diff) | |
download | mpd-f18e52417639518545ebce3649f3ce3450bcb01c.tar.gz mpd-f18e52417639518545ebce3649f3ce3450bcb01c.tar.xz mpd-f18e52417639518545ebce3649f3ce3450bcb01c.zip |
send SIGSTOP to player and decoder processes on pause, too
as with the stop command, this will cause the player and decoder
to suspend and not wake up hundreds of times a second to poll
a variable for wakeup. This will reduce power consumption
on some CPUs while mpd is paused and not playing.
tests:
pause && unpause => OK
pause && stop && play => OK
pause && exit && restart w/statefile && unpause => OK
pause && block sound device && \
unpause => failed to open sound device \
=> still paused and suspended => unblock sound device &&
unpause => OK (playing)
In all cases, the player process releases the audio device
when paused before going into the suspended state.
git-svn-id: https://svn.musicpd.org/mpd/trunk@6822 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r-- | src/player.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/player.c b/src/player.c index 096503b19..e84f31828 100644 --- a/src/player.c +++ b/src/player.c @@ -239,6 +239,7 @@ int playerStop(int fd) if (player_pid > 0 && pc->state != PLAYER_STATE_STOP) { pc->stop = 1; + kill(player_pid, SIGCONT); while (player_pid > 0 && pc->stop) my_usleep(1000); } @@ -266,6 +267,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); } |