summaryrefslogtreecommitdiffstats
path: root/src/server/events/SetMetadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/events/SetMetadata.cpp')
-rw-r--r--src/server/events/SetMetadata.cpp15
1 files changed, 4 insertions, 11 deletions
diff --git a/src/server/events/SetMetadata.cpp b/src/server/events/SetMetadata.cpp
index fa02f220..26757426 100644
--- a/src/server/events/SetMetadata.cpp
+++ b/src/server/events/SetMetadata.cpp
@@ -17,6 +17,8 @@
#include <string>
#include <vector>
+#include <glibmm/thread.h>
+
#include <boost/format.hpp>
#include "raul/log.hpp"
@@ -68,7 +70,6 @@ SetMetadata::SetMetadata(Engine& engine,
, _compiled_patch(NULL)
, _create(create)
, _context(context)
- , _lock(engine.engine_store()->lock(), Glib::NOT_LOCK)
{
if (context != Resource::DEFAULT) {
Resource::set_context(_properties, context);
@@ -107,7 +108,8 @@ SetMetadata::pre_process()
const bool is_graph_object = Raul::Path::is_path(_subject);
- _lock.acquire();
+ // Take a writer lock while we modify the store
+ Glib::RWLock::WriterLock lock(_engine.engine_store()->lock());
_object = is_graph_object
? _engine.engine_store()->find_object(Raul::Path(_subject.str()))
@@ -251,17 +253,12 @@ SetMetadata::pre_process()
}
if (_status != SUCCESS) {
- _error_predicate += key.str();
break;
}
_types.push_back(op);
}
- if (!_create_event) {
- _lock.release();
- }
-
Event::pre_process();
}
@@ -367,10 +364,6 @@ SetMetadata::post_process()
} else {
respond(_status);
}
-
- if (_create_event) {
- _lock.release();
- }
}
} // namespace Events