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();