Index: src/server/storage/entities-source.xsl
===================================================================
--- src/server/storage/entities-source.xsl
+++ src/server/storage/entities-source.xsl
@@ -349,28 +349,21 @@
::retrieveByNameOrCreate( const &name)
{
static QMutex lock;
+ QMutexLocker locker(&lock);
auto rv = retrieveByName(name);
if (rv.isValid()) {
return rv;
}
- if (lock.tryLock()) {
- rv.setName(name);
- if (!rv.insert()) {
- lock.unlock();
- return ();
- }
-
- if (Private::cacheEnabled) {
- Private::addToCache(rv);
- }
- lock.unlock();
- return rv;
+ rv.setName(name);
+ if (!rv.insert()) {
+ return ();
}
- lock.lock();
- lock.unlock();
- return retrieveByName(name);
+ if (Private::cacheEnabled) {
+ Private::addToCache(rv);
+ }
+ return rv;
}
@@ -389,29 +382,22 @@
PartType PartType::retrieveByFQNameOrCreate( const QString & ns, const QString & name )
{
static QMutex lock;
+ QMutexLocker locker(&lock);
PartType rv = retrieveByFQName(ns, name);
if (rv.isValid()) {
return rv;
}
- if (lock.tryLock()) {
- rv.setNs(ns);
- rv.setName(name);
- if (!rv.insert()) {
- lock.unlock();
- return PartType();
- }
-
- if (Private::cacheEnabled) {
- Private::addToCache(rv);
- }
- lock.unlock();
- return rv;
+ rv.setNs(ns);
+ rv.setName(name);
+ if (!rv.insert()) {
+ return PartType();
}
- lock.lock();
- lock.unlock();
- return retrieveByFQName(ns, name);
+ if (Private::cacheEnabled) {
+ Private::addToCache(rv);
+ }
+ return rv;
}