[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:07:57 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=aae1ad8

The following commit has been merged in the master branch:
commit aae1ad829b6615a2ac7d080fafacb725c3497bee
Author: Martin Klapetek <mklapetek at kde.org>
Date:   Fri Jan 3 18:16:25 2014 +0100

    Cache the KABC::Addressee::Map returned in contacts()
    
    So we don't have to recreate it everytime contacts() is called.
    
    Reviewed-by: David Edmundson
---
 KTp/im-persons-data-source.cpp | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/KTp/im-persons-data-source.cpp b/KTp/im-persons-data-source.cpp
index ca0b28b..ee67e83 100644
--- a/KTp/im-persons-data-source.cpp
+++ b/KTp/im-persons-data-source.cpp
@@ -31,6 +31,7 @@
 #include "KTp/types.h"
 
 #include <KPeople/AllContactsMonitor>
+#include <KDE/KABC/Addressee>
 
 #include <KDebug>
 
@@ -55,6 +56,7 @@ private:
     QString createUri(const KTp::ContactPtr &contact) const;
     KABC::Addressee contactToAddressee(const Tp::ContactPtr &contact) const;
     QHash<QString, KTp::ContactPtr> m_contacts;
+    KABC::Addressee::Map m_contactMap;
 };
 
 KTpAllContacts::KTpAllContacts()
@@ -99,14 +101,17 @@ void KTpAllContacts::onAllKnownContactsChanged(const Tp::Contacts &contactsAdded
     if (!m_contacts.isEmpty()) {
         Q_FOREACH (const Tp::ContactPtr &c, contactsRemoved) {
             const KTp::ContactPtr &contact = KTp::ContactPtr::qObjectCast(c);
-            m_contacts.remove(createUri(contact));
-            Q_EMIT contactRemoved(createUri(contact));
+            const QString uri = createUri(contact);
+            m_contacts.remove(uri);
+            m_contactMap.remove(uri);
+            Q_EMIT contactRemoved(uri);
         }
     }
 
     Q_FOREACH (const Tp::ContactPtr &contact, contactsAdded) {
         KTp::ContactPtr ktpContact = KTp::ContactPtr::qObjectCast(contact);
         m_contacts.insert(createUri(ktpContact), ktpContact);
+        //no need to insert to m_contactMap here; will be done the first time it's requested
         Q_EMIT contactAdded(createUri(ktpContact), contactToAddressee(ktpContact));
 
         connect(ktpContact.data(), SIGNAL(presenceChanged(Tp::Presence)),
@@ -132,6 +137,7 @@ void KTpAllContacts::onAllKnownContactsChanged(const Tp::Contacts &contactsAdded
 void KTpAllContacts::onContactChanged()
 {
     const KTp::ContactPtr contact(qobject_cast<KTp::Contact*>(sender()));
+    m_contactMap.insert(createUri(contact), contactToAddressee(contact));
     Q_EMIT contactChanged(createUri(contact), contactToAddressee(contact));
 }
 
@@ -140,18 +146,20 @@ void KTpAllContacts::onContactInvalidated()
     const KTp::ContactPtr contact(qobject_cast<KTp::Contact*>(sender()));
 
     const QString uri = createUri(contact);
-    Q_EMIT contactRemoved(uri);
     m_contacts.remove(uri);
+    m_contactMap.remove(uri);
+    Q_EMIT contactRemoved(uri);
 }
 
 KABC::Addressee::Map KTpAllContacts::contacts()
 {
-    KABC::Addressee::Map contactMap;
-    Q_FOREACH(const KTp::ContactPtr &contact, m_contacts.values()) {
-        contactMap.insert(createUri(contact), contactToAddressee(contact));
+    if (m_contacts.values().size() != m_contactMap.values().size()) {
+        m_contactMap.clear();
+        Q_FOREACH(const KTp::ContactPtr &contact, m_contacts.values()) {
+            m_contactMap.insert(createUri(contact), contactToAddressee(contact));
+        }
     }
-    kDebug() << contactMap.keys().size();
-    return contactMap;
+    return m_contactMap;
 }
 
 KABC::Addressee KTpAllContacts::contactToAddressee(const Tp::ContactPtr &contact) const

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list