--- a/upqo/ohplaylist_qo.h
+++ b/upqo/ohplaylist_qo.h
@@ -70,6 +70,11 @@
             emit currentTrackId(value);
         } else if (!strcmp(nm, "TransportState")) {
             emit tpStateChanged(value);
+            if (m_curtpstate == UPnPClient::OHPlaylist::TPS_Stopped &&
+                value == UPnPClient::OHPlaylist::TPS_Playing && m_curid != -1) {
+                emit currentTrackId(m_curid);
+            }
+            m_curtpstate = UPnPClient::OHPlaylist::TPState(value);
         } else if (!strcmp(nm, "Shuffle")) {
             emit shuffleChanged(value != 0);
         } else if (!strcmp(nm, "Repeat")) {
@@ -252,6 +257,8 @@
     std::vector<int> m_idsv;
     std::unordered_map<int, UPnPClient::UPnPDirObject> m_metapool;
     int m_curid;
+    UPnPClient::OHPlaylist::TPState m_curtpstate{
+        UPnPClient::OHPlaylist::TPS_Unknown};
     bool m_forceUpdate;
     bool m_discardArrayEvents;