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

List:       kde-commits
Subject:    kdereview/phonon/gstreamer
From:       Jens Bache-Wiig <jbache () trolltech ! com>
Date:       2008-01-30 15:51:33
Message-ID: 1201708293.861102.26957.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 768759 by jbache:

Fixes multiple emits of the same meta tags


 M  +9 -4      mediaobject.cpp  


--- trunk/kdereview/phonon/gstreamer/mediaobject.cpp #768758:768759
@@ -498,8 +498,8 @@
     Phonon::State oldState = m_state;
     m_state = newstate; // m_state must be set before emitting, since 
                         // Error state requires that state() will return the new value
+    m_pendingState = newstate;
     emit stateChanged(newstate, oldState);
-    m_pendingState = newstate;
 
     switch (newstate) {
     case Phonon::PausedState:
@@ -910,8 +910,11 @@
         //qDebug("Unsupported tag type: %s", g_type_name(type));
         break;
     }
-    if (!value.isEmpty())
-        newData->insert(QString(tag).toUpper(), value);
+
+    QString key = QString(tag).toUpper();
+    QString currVal = newData->value(key);
+    if (!value.isEmpty() && !(newData->contains(key) && currVal == value))
+        newData->insert(key, value);
 }
 
 /**
@@ -955,10 +958,12 @@
             GstTagList* tag_list = 0;
             gst_message_parse_tag(gstMessage, &tag_list);
             if (tag_list) {
+                TagMap oldMap = m_metaData; // Keep a copy of the old one for reference
                 // Append any new meta tags to the existing tag list
                 gst_tag_list_foreach (tag_list, &foreach_tag_function, &m_metaData);
                 m_backend->logMessage("Meta tags found", Backend::Info, this);
-                emit metaDataChanged(m_metaData);
+                if (oldMap != m_metaData)
+                    emit metaDataChanged(m_metaData);
                 gst_tag_list_free(tag_list);
             }
         }
[prev in list] [next in list] [prev in thread] [next in thread] 

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