[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