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

List:       kde-commits
Subject:    koffice/libs/resources
From:       Boudewijn Rempt <boud () valdyas ! org>
Date:       2009-09-27 10:13:30
Message-ID: 1254046410.436169.30201.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1028466 by rempt:

make it possible to cancel the loading of resources

 M  +11 -8     KoResourceServer.h  
 M  +5 -0      KoResourceServerProvider.cpp  
 M  +1 -1      KoResourceServerProvider.h  


--- trunk/koffice/libs/resources/KoResourceServer.h #1028465:1028466
@@ -67,13 +67,16 @@
     */
     QString extensions() { return m_extensions; }
 
+    void cancel() { m_cancelled = true; }
+
 private:
     QString m_type;
     QString m_extensions;
 
 protected:
 
-    QMutex loadLock;
+    bool   m_cancelled;
+    QMutex m_loadLock;
 
 };
 
@@ -103,7 +106,7 @@
         kDebug(30009) << "loading  resources for type " << type();
         QStringList uniqueFiles;
 
-        while (!filenames.empty())
+        while (!filenames.empty() && !m_cancelled)
         {
             QString front = filenames.first();
             filenames.pop_front();
@@ -115,7 +118,7 @@
             //      the resource to find out whether they are really the same, but for now this
             //      will prevent the same brush etc. showing up twice.
             if (uniqueFiles.empty() || uniqueFiles.indexOf(fname) == -1) {
-                loadLock.lock();
+                m_loadLock.lock();
                 uniqueFiles.append(fname);
                 T* resource = createResource(front);
                 if (resource->load() && resource->valid())
@@ -134,7 +137,7 @@
                 else {
                     delete resource;
                 }
-                loadLock.unlock();
+                m_loadLock.unlock();
             }
         }
         kDebug(30009) << "done loading  resources for type " << type();
@@ -206,12 +209,12 @@
     }
 
     QList<T*> resources() {
-        loadLock.lock();
+        m_loadLock.lock();
         QList<T*> resourceList = m_resources;
         foreach(T* r, m_resourceBlackList) {
             resourceList.removeOne(r);
         }
-        loadLock.unlock();
+        m_loadLock.unlock();
         return resourceList;
     }
 
@@ -258,7 +261,7 @@
      */
     void addObserver(KoResourceServerObserver<T>* observer, bool notifyLoadedResources = true)
     {
-        loadLock.lock();
+        m_loadLock.lock();
         if(observer && !m_observers.contains(observer)) {
             m_observers.append(observer);
 
@@ -268,7 +271,7 @@
                 }
             }
         }
-        loadLock.unlock();
+        m_loadLock.unlock();
     }
 
     /**
--- trunk/koffice/libs/resources/KoResourceServerProvider.cpp #1028465:1028466
@@ -73,6 +73,11 @@
     m_server->loadResources(m_fileNames);
 }
 
+void KoResourceLoaderThread::cancel()
+{
+    m_server->cancel();
+}
+
 QStringList KoResourceLoaderThread::getFileNames( const QString & extensions)
 {
     QStringList extensionList = extensions.split(':');
--- trunk/koffice/libs/resources/KoResourceServerProvider.h #1028465:1028466
@@ -46,9 +46,9 @@
 
     /// loads the resources
     void run();
+    void cancel();
 private:
     QStringList getFileNames( const QString & extensions);
-
     KoResourceServerBase * m_server;
     QStringList m_fileNames;
 
[prev in list] [next in list] [prev in thread] [next in thread] 

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