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

List:       kde-commits
Subject:    branches/KDE/4.4/kdelibs/nepomuk/core
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2010-02-03 16:27:16
Message-ID: 1265214436.247029.23400.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1084732 by trueg:

Backport:
Fixed resetting of pimo thing and grounding occurrence.
While I was on it I also removed the now useless deleteData() method and
properly cleaned up on ResourceManager destruction.


 M  +2 -2      resource.cpp  
 M  +16 -13    resourcedata.cpp  
 M  +1 -9      resourcedata.h  
 M  +2 -1      resourcemanager.cpp  
 M  +1 -1      resourcemanager_p.h  


--- branches/KDE/4.4/kdelibs/nepomuk/core/resource.cpp #1084731:1084732
@@ -123,7 +123,7 @@
             if ( !m_data->isValid() ||
                  m_data->proxy() ||
                  m_data->rm()->dataCacheFull() ) {
-                m_data->deleteData();
+                delete m_data;
             }
         }
     }
@@ -134,7 +134,7 @@
 {
     if( m_data != res.m_data ) {
         if ( m_data && !m_data->deref() && !m_data->isValid() ) {
-            m_data->deleteData();
+            delete m_data;
         }
         m_data = res.m_data;
         if ( m_data )
--- branches/KDE/4.4/kdelibs/nepomuk/core/resourcedata.cpp #1084731:1084732
@@ -1,6 +1,6 @@
 /*
  * This file is part of the Nepomuk KDE project.
- * Copyright (C) 2006-2009 Sebastian Trueg <trueg@kde.org>
+ * Copyright (C) 2006-2010 Sebastian Trueg <trueg@kde.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -94,14 +94,14 @@
     if( m_rm->dataCacheFull() )
         m_rm->cleanupCache();
 
-    ++m_rm->dataCnt;
+    m_rm->dataCnt.ref();
 }
 
 
 Nepomuk::ResourceData::~ResourceData()
 {
-    delete m_pimoThing;
-    --m_rm->dataCnt;
+    resetAll(true);
+    m_rm->dataCnt.deref();
 }
 
 
@@ -166,7 +166,7 @@
 
 
 
-void Nepomuk::ResourceData::resetAll()
+void Nepomuk::ResourceData::resetAll( bool isDelete )
 {
     // reset proxy
     bool hadProxy = false;
@@ -174,7 +174,7 @@
         hadProxy = true;
         if( !m_proxyData->deref() &&
             rm()->dataCacheFull() )
-            m_proxyData->deleteData();
+            delete m_proxyData;
         m_proxyData = 0;
     }
 
@@ -190,19 +190,22 @@
 
     // reset all variables
     m_uri = QUrl();
+    m_fileUrl = KUrl();
     m_kickoffId.truncate(0);
     m_kickoffUri = QUrl();
     m_cache.clear();
     m_cacheDirty = false;
     m_types.clear();
-    m_mainType = Soprano::Vocabulary::RDFS::Resource();
-}
+    delete m_pimoThing;
+    m_pimoThing = 0;
+    m_groundingOccurence = 0;
 
-
-void Nepomuk::ResourceData::deleteData()
-{
-    resetAll();
-    delete this;
+    // when we are being deleted the value of m_mainType is not important
+    // andmore. Also since ResourceManager is a global static it might be
+    // deleted after the global static behind Soprano::Vocabulary::RDFS
+    // which results in a crash.
+    if( !isDelete )
+        m_mainType = Soprano::Vocabulary::RDFS::Resource();
 }
 
 
--- branches/KDE/4.4/kdelibs/nepomuk/core/resourcedata.h #1084731:1084732
@@ -45,14 +45,6 @@
         explicit ResourceData( const QUrl& uri, const QString& kickoffId_, const \
QUrl& type_, ResourceManagerPrivate* rm );  ~ResourceData();
 
-        /**
-         * Used instead of the destructor in Resource. The reason for the existence \
                of
-         * this method is that the destructor does not remove the uri from the \
                global
-         * data map. That behaviour is necessary since in certain situations \
                temporary
-         * ResourceData instances are created.
-         */
-        void deleteData();
-
         inline bool ref() {
             return m_ref.ref();
         }
@@ -164,7 +156,7 @@
 
         /// Will reset this instance to 0 as if constructed without parameters
         /// Used by remove() and deleteData()
-        void resetAll();
+        void resetAll( bool isDelete = false );
 
         /// identifier that was used to construct the resource. Will be used by \
determineUri  /// to check for nao:identifiers or even nie:urls.
--- branches/KDE/4.4/kdelibs/nepomuk/core/resourcemanager.cpp #1084731:1084732
@@ -201,7 +201,7 @@
          rdIt != rdl.end(); ++rdIt ) {
         ResourceData* data = *rdIt;
         if ( !data->cnt() ) {
-            data->deleteData();
+            delete data;
             if( num > 0 && --num == 0 )
                 break;
         }
@@ -258,6 +258,7 @@
 
 Nepomuk::ResourceManager::~ResourceManager()
 {
+    clearCache();
     delete d->resourceFilterModel;
     delete d->mainModel;
     delete d;
--- branches/KDE/4.4/kdelibs/nepomuk/core/resourcemanager_p.h #1084731:1084732
@@ -69,7 +69,7 @@
         /// contains all non-initialized ResourceData objects created in \
data(QString)  KickoffDataHash m_idKickoffData;
 
-        int dataCnt;
+        QAtomicInt dataCnt;
 
         ResourceManager* m_manager;
 


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

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