diff options
Diffstat (limited to 'src/server/events/SetMetadata.cpp')
-rw-r--r-- | src/server/events/SetMetadata.cpp | 15 |
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 |