[Kde-pim] [nepomuk-core/KDE/4.10] libnepomukcore/resource: Don't lock the RM mutex just to check if our URI is empty, check it directly.
David Faure
faure at kde.org
Fri Mar 8 12:50:10 GMT 2013
Git commit 71985b86333444fda56a96fa30d4e9ac44954f8b by David Faure.
Committed on 08/03/2013 at 13:48.
Pushed by dfaure into branch 'KDE/4.10'.
Don't lock the RM mutex just to check if our URI is empty, check it directly.
This leads to a major speed up in kmail, which I found to be very often
stuck on that RM mutex in the main thread, even though we prepare the resource
in a different thread (in asyncnepomukretriever) so all props are available.
CCMAIL: kde-pim at kde.org
M +4 -0 libnepomukcore/resource/resource.cpp
M +3 -1 libnepomukcore/resource/resourcedata.cpp
http://commits.kde.org/nepomuk-core/71985b86333444fda56a96fa30d4e9ac44954f8b
diff --git a/libnepomukcore/resource/resource.cpp b/libnepomukcore/resource/resource.cpp
index df02be7..7158802 100644
--- a/libnepomukcore/resource/resource.cpp
+++ b/libnepomukcore/resource/resource.cpp
@@ -696,6 +696,10 @@ Nepomuk2::Resource Nepomuk2::Resource::fromResourceUri( const KUrl& uri, const N
void Nepomuk2::Resource::determineFinalResourceData() const
{
+ if (!m_data->uri().isEmpty()) {
+ return;
+ }
+
QMutexLocker lock( &m_data->rm()->mutex );
// Get an initialized ResourceData instance
diff --git a/libnepomukcore/resource/resourcedata.cpp b/libnepomukcore/resource/resourcedata.cpp
index b4c4bcc..84ab3df 100644
--- a/libnepomukcore/resource/resourcedata.cpp
+++ b/libnepomukcore/resource/resourcedata.cpp
@@ -106,6 +106,7 @@ Nepomuk2::ResourceData::~ResourceData()
bool Nepomuk2::ResourceData::isFile()
{
+ QMutexLocker lock(&m_modificationMutex);
return( m_uri.scheme() == QLatin1String("file") ||
m_nieUrl.scheme() == QLatin1String("file") ||
hasProperty( RDF::type(), NFO::FileDataObject() ) );
@@ -115,6 +116,7 @@ bool Nepomuk2::ResourceData::isFile()
QUrl Nepomuk2::ResourceData::uri() const
{
+ QMutexLocker lock(&m_modificationMutex);
return m_uri;
}
@@ -156,6 +158,7 @@ QUrl Nepomuk2::ResourceData::type()
void Nepomuk2::ResourceData::resetAll( bool isDelete )
{
+ QMutexLocker locker(&m_modificationMutex);
// remove us from all caches (store() will re-insert us later if necessary)
m_rm->mutex.lock();
@@ -176,7 +179,6 @@ void Nepomuk2::ResourceData::resetAll( bool isDelete )
m_rm->mutex.unlock();
// reset all variables
- QMutexLocker locker(&m_modificationMutex);
m_uri.clear();
m_nieUrl.clear();
m_naoIdentifier.clear();
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/
More information about the kde-pim
mailing list