Commit Diff


commit - 84e97354c3e6631ee825ff27089726f5b39ba334
commit + a973348dc123448b654e5e3786a8d2d2ad9c91bf
blob - 724f19a4fbf4447f416030a79b91d823ceccdfa6
blob + cf27175052e868c9c6ab9f654c36fb0eb39d5791
--- mpd/mpd_now_playing.c
+++ mpd/mpd_now_playing.c
@@ -78,6 +78,10 @@ static bool emit_snapshot(struct mpd_connection *conne
     return false;
   }
   enum mpd_state state = mpd_status_get_state(status);
+  if (state != MPD_STATE_PLAY) {
+    mpd_status_free(status);
+    return true;
+  }
   int position = mpd_status_get_song_pos(status);
   int song_id = mpd_status_get_song_id(status);
   unsigned elapsed_ms = mpd_status_get_elapsed_ms(status);
blob - c2fbb26e67987d182d86ff1049ef76170caaab8d
blob + 0f1e09bed68bfe8d262e17fbcacd27a087317bd4
--- mpd/tests/test_mpd_tools.py
+++ mpd/tests/test_mpd_tools.py
@@ -466,6 +466,16 @@ class MPDToolsTest(unittest.TestCase):
         self.assertEqual(value["elapsed_seconds"], 12.5)
         self.assertEqual(value["song_id"], 1)
 
+    def test_now_playing_is_silent_when_paused_or_stopped(self):
+        for state in ("pause", "stop"):
+            with self.subTest(state=state):
+                self.seed_queue(["track.ogg"], current=0, state=state)
+                for arguments in ((), ("--json",)):
+                    with self.subTest(arguments=arguments):
+                        result = self.run_tool("mpd_now_playing", *arguments)
+                        self.assertEqual(result.returncode, 0, result.stderr)
+                        self.assertEqual(result.stdout, "")
+
     def test_explicit_config_helper_overrides_connection_environment(self):
         self.seed_queue(["helper.ogg"], current=0, state="play")
         with tempfile.TemporaryDirectory() as directory: