aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/command.c12
-rw-r--r--src/player.c17
-rw-r--r--src/player.h2
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);