From a13d96b5ee95affa653df4a3c4a1f11a98faf00c Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 16 Jul 2020 21:10:15 +0000 Subject: mpris: fixed playback startup detection (#1053) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9432 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/mpris/player2object.cpp | 43 +++++++---------------------- 1 file changed, 10 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/plugins/General/mpris/player2object.cpp b/src/plugins/General/mpris/player2object.cpp index b26a2c9d5..666c9511e 100644 --- a/src/plugins/General/mpris/player2object.cpp +++ b/src/plugins/General/mpris/player2object.cpp @@ -283,42 +283,19 @@ void Player2Object::Stop() void Player2Object::emitPropertiesChanged() { - QList changedProps; - if(m_props["CanGoNext"] != canGoNext()) - changedProps << "CanGoNext"; - if(m_props["CanGoPrevious"] != canGoPrevious()) - changedProps << "CanGoPrevious"; - if(m_props["CanPause"] != canPause()) - changedProps << "CanPause"; - if(m_props["CanPlay"] != canPlay()) - changedProps << "CanPlay"; - if(m_props["CanSeek"] != canSeek()) - changedProps << "CanSeek"; - if(m_props["LoopStatus"] != loopStatus()) - changedProps << "LoopStatus"; - if(m_props["MaximumRate"] != maximumRate()) - changedProps << "MaximumRate"; - if(m_props["MinimumRate"] != minimumRate()) - changedProps << "MinimumRate"; - if(m_props["PlaybackStatus"] != playbackStatus()) - changedProps << "PlaybackStatus"; - if(m_props["Rate"] != rate()) - changedProps << "Rate"; - if(m_props["Shuffle"] != shuffle()) - changedProps << "Shuffle"; - if(m_props["Volume"] != volume()) - changedProps << "Volume"; - if(m_props["Metadata"] != metadata()) - changedProps << "Metadata"; - - if(changedProps.isEmpty()) - return; - + QMap prevProps = m_props; syncProperties(); QVariantMap map; - for(const QByteArray &name : qAsConst(changedProps)) - map.insert(name, m_props.value(name)); + QMap::const_iterator it; + for (it = m_props.constBegin(); it != m_props.constEnd(); ++it) + { + if(it.value() != prevProps.value(it.key())) + map.insert(it.key(), it.value()); + } + + if(map.isEmpty()) + return; QDBusMessage msg = QDBusMessage::createSignal("/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "PropertiesChanged"); -- cgit v1.2.3-13-gbd6f