From 1b6666fa39cdbe955661e7fa1d3ac8a8e68e4216 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@musicpd.org>
Date: Fri, 10 Mar 2017 16:11:34 +0100
Subject: [PATCH] Partition: handle SYNC_WITH_PLAYER before TAG_MODIFIED

The TAG_MODIFIED handler (i.e. playlist::TagModified()) works only if
the modified song is the current song - something that is not updated
until SYNC_WITH_PLAYER is finished.  This fixes tag updates right
after a new song is started.
---
 NEWS              | 1 +
 src/Partition.cxx | 6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/NEWS b/NEWS
index a052efa6f..36e4dcaf4 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ ver 0.20.6 (not yet released)
   - ffmpeg: re-enable as fallback
   - mpcdec: fix crash (division by zero) after seeking
   - sidplay: make compatible with libsidplayfp < 1.8
+* fix stream tags after automatic song change
 * workaround for GCC 4.9.4 / libstdc++ bug (build failure)
 
 ver 0.20.5 (2017/02/20)
diff --git a/src/Partition.cxx b/src/Partition.cxx
index 59754d2fb..f066041ec 100644
--- a/src/Partition.cxx
+++ b/src/Partition.cxx
@@ -141,9 +141,9 @@ Partition::OnMixerVolumeChanged(gcc_unused Mixer &mixer, gcc_unused int volume)
 void
 Partition::OnGlobalEvent(unsigned mask)
 {
-	if ((mask & TAG_MODIFIED) != 0)
-		TagModified();
-
 	if ((mask & SYNC_WITH_PLAYER) != 0)
 		SyncWithPlayer();
+
+	if ((mask & TAG_MODIFIED) != 0)
+		TagModified();
 }