[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [ktp-kded-module/kde-telepathy-0.8] /: Check if the mpris metadata are actually new
From:       Martin Klapetek <mklapetek () kde ! org>
Date:       2014-05-12 22:03:13
Message-ID: E1WjyJV-0007X0-Rz () scm ! kde ! org
[Download RAW message or body]

Git commit 989c65ab68b4e9479a83fc98fcf018a91b72dd16 by Martin Klapetek.
Committed on 12/05/2014 at 22:02.
Pushed by mklapetek into branch 'kde-telepathy-0.8'.

Check if the mpris metadata are actually new

It may happen that players emit the "PropertiesChanged" signal several
times during the playback (as for example player's features change)
which normally results in re-setting the same presence. So here's a
check preventing setting the same thing over and over again.

Reviewed-by: David Edmundson

M  +17   -1    telepathy-mpris.cpp

http://commits.kde.org/telepathy-kded-module/989c65ab68b4e9479a83fc98fcf018a91b72dd16

diff --git a/telepathy-mpris.cpp b/telepathy-mpris.cpp
index 69e8562..44b041f 100644
--- a/telepathy-mpris.cpp
+++ b/telepathy-mpris.cpp
@@ -230,7 +230,23 @@ void TelepathyMPRIS::setPlaybackStatus(const QVariantMap& \
replyData)  
     //track data change
     if (replyData.keys().contains(QLatin1String("Metadata"))) {
-        m_lastReceivedMetadata = \
qdbus_cast<QVariantMap>(replyData.value(QLatin1String("Metadata"))); +        \
QVariantMap metadata = \
qdbus_cast<QVariantMap>(replyData.value(QLatin1String("Metadata"))); +
+        QString artist = \
m_lastReceivedMetadata.value(QLatin1String("xesam:artist")).toString(); +        \
QString title = m_lastReceivedMetadata.value(QLatin1String("xesam:title")).toString();
 +        QString album = \
m_lastReceivedMetadata.value(QLatin1String("xesam:album")).toString(); +        \
QString trackNumber = \
m_lastReceivedMetadata.value(QLatin1String("xesam:trackNumber")).toString(); +
+        QString newArtist = \
metadata.value(QLatin1String("xesam:artist")).toString(); +        QString newTitle = \
metadata.value(QLatin1String("xesam:title")).toString(); +        QString newAlbum = \
metadata.value(QLatin1String("xesam:album")).toString(); +        QString \
newTrackNumber = metadata.value(QLatin1String("xesam:trackNumber")).toString(); +
+        if (artist == newArtist && title == newTitle && album == newAlbum && \
trackNumber == newTrackNumber) { +            return;
+        } else {
+            m_lastReceivedMetadata = metadata;
+        }
     }
 
     setTrackToPresence();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic