Commit Diff


commit - c06683bfcc3066ece6177a2256efeeb1f873c79d
commit + 3ad8bae849a3a44cbdde1c62f087b654a8439a74
blob - d48e57a314ca493e97f0039da8b3fbd3ccff947b
blob + 889149e7a82ddf07e0169a50cf1563f629f8d7ca
--- control.c
+++ control.c
@@ -408,7 +408,17 @@ control_dispatch_imsg(int fd, short event, void *bula)
 			if (IMSG_DATA_SIZE(imsg) !=
 			    sizeof(struct player_seek)) {
 				main_senderr(&c->iev, "wrong size");
+				break;
+			}
+			switch (play_state) {
+			case STATE_STOPPED:
+				main_playlist_resume();
+				break;
+			case STATE_PLAYING:
 				break;
+			case STATE_PAUSED:
+				play_state = STATE_PLAYING;
+				break;
 			}
 			main_send_player(IMSG_CTL_SEEK, -1, imsg.data,
 			    IMSG_DATA_SIZE(imsg));
blob - 0000c72ac2ba331ec314d6d4fdb26bd78c5020ca
blob + 12582d003f7216af6f4842e8920156b0cc644311
--- player.c
+++ player.c
@@ -279,7 +279,7 @@ player_pause(int64_t *s)
 	int r;
 
 	r = player_dispatch(s);
-	return r == IMSG_RESUME;
+	return r == IMSG_RESUME || r == IMSG_CTL_SEEK;
 }
 
 static int