diff options
-rw-r--r-- | src/command.c | 12 | ||||
-rw-r--r-- | src/player.c | 17 | ||||
-rw-r--r-- | src/player.h | 2 |
3 files changed, 30 insertions, 1 deletions
diff --git a/src/command.c b/src/command.c index 6cc49eee6..9d0fca603 100644 --- a/src/command.c +++ b/src/command.c @@ -144,6 +144,16 @@ int handleStop(FILE * fp, unsigned int * permission, int argArrayLength, int handlePause(FILE * fp, unsigned int * permission, int argArrayLength, char ** argArray) { + if(argArrayLength==2) { + char * test; + int pause = strtol(argArray[1],&test,10); + if(*test!='\0' || (pause!=0 && pause!=1)) { + myfprintf(fp,"%s \%s\" is not 0 or 1\n", + COMMAND_RESPOND_ERROR,pause); + return -1; + } + return playerSetPause(fp,pause); + } return playerPause(fp); } @@ -524,7 +534,7 @@ void initCommands() { addCommand(COMMAND_PLAY ,PERMISSION_CONTROL, 0, 1,handlePlay); addCommand(COMMAND_STOP ,PERMISSION_CONTROL, 0, 0,handleStop); - addCommand(COMMAND_PAUSE ,PERMISSION_CONTROL, 0, 0,handlePause); + addCommand(COMMAND_PAUSE ,PERMISSION_CONTROL, 0, 1,handlePause); addCommand(COMMAND_STATUS ,PERMISSION_READ, 0, 0,commandStatus); addCommand(COMMAND_KILL ,PERMISSION_ADMIN, -1,-1,handleKill); addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose); diff --git a/src/player.c b/src/player.c index cf09f388b..081219e2d 100644 --- a/src/player.c +++ b/src/player.c @@ -215,6 +215,23 @@ int playerPause(FILE * fp) { return 0; } +int playerSetPause(FILE * fp, int pause) { + PlayerControl * pc = &(getPlayerData()->playerControl); + + if(player_pid<=0) return 0; + + switch(pc->state) { + case PLAYER_STATE_PLAY: + if(pause) playerPause(fp); + break; + case PLAYER_STATE_PAUSE: + if(!pause) playerPause(fp); + break; + } + + return 0; +} + int getPlayerElapsedTime() { return (int)(getPlayerData()->playerControl.elapsedTime+0.5); } diff --git a/src/player.h b/src/player.h index 54eb56116..0b0578b68 100644 --- a/src/player.h +++ b/src/player.h @@ -75,6 +75,8 @@ void player_sigHandler(int signal); int playerPlay(FILE * fp, char * utf8file); +int playerSetPause(FILE * fp, int pause); + int playerPause(FILE * fp); int playerStop(FILE * fp); |