From 9a2aa9a337761d2afd602db460db2f012e9233a7 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Wed, 14 Oct 2015 13:40:20 -0700 Subject: [PATCH] locking --- assignment-client/src/AssignmentAction.cpp | 16 ++++++++++++---- assignment-client/src/AssignmentAction.h | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/AssignmentAction.cpp b/assignment-client/src/AssignmentAction.cpp index 107a80cf14..388f4123f6 100644 --- a/assignment-client/src/AssignmentAction.cpp +++ b/assignment-client/src/AssignmentAction.cpp @@ -24,16 +24,24 @@ AssignmentAction::~AssignmentAction() { } void AssignmentAction::removeFromSimulation(EntitySimulation* simulation) const { - simulation->removeAction(_id); - simulation->applyActionChanges(); + withReadLock([&]{ + simulation->removeAction(_id); + simulation->applyActionChanges(); + }); } QByteArray AssignmentAction::serialize() const { - return _data; + QByteArray result; + withReadLock([&]{ + result = _data; + }); + return result; } void AssignmentAction::deserialize(QByteArray serializedArguments) { - _data = serializedArguments; + withWriteLock([&]{ + _data = serializedArguments; + }); } bool AssignmentAction::updateArguments(QVariantMap arguments) { diff --git a/assignment-client/src/AssignmentAction.h b/assignment-client/src/AssignmentAction.h index 23720bd465..6b901c9766 100644 --- a/assignment-client/src/AssignmentAction.h +++ b/assignment-client/src/AssignmentAction.h @@ -19,7 +19,7 @@ #include "EntityActionInterface.h" -class AssignmentAction : public EntityActionInterface { +class AssignmentAction : public EntityActionInterface, public ReadWriteLockable { public: AssignmentAction(EntityActionType type, const QUuid& id, EntityItemPointer ownerEntity); virtual ~AssignmentAction();