From 2c210928089b4b8753272655b6a5392e76ef315b Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Sun, 3 Jan 2016 07:59:49 -0800 Subject: [PATCH] be more careful about locking --- libraries/physics/src/ObjectAction.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libraries/physics/src/ObjectAction.cpp b/libraries/physics/src/ObjectAction.cpp index 17b565ba21..e8e1188dc9 100644 --- a/libraries/physics/src/ObjectAction.cpp +++ b/libraries/physics/src/ObjectAction.cpp @@ -23,15 +23,15 @@ ObjectAction::~ObjectAction() { } void ObjectAction::updateAction(btCollisionWorld* collisionWorld, btScalar deltaTimeStep) { - bool ownerEntityExpired = false; quint64 expiresWhen = 0; + EntityItemPointer ownerEntity = nullptr; withReadLock([&]{ - ownerEntityExpired = _ownerEntity.expired(); + ownerEntity = _ownerEntity.lock(); expiresWhen = _expires; }); - if (ownerEntityExpired) { + if (!ownerEntity) { qDebug() << "warning -- action with no entity removing self from btCollisionWorld."; btDynamicsWorld* dynamicsWorld = static_cast(collisionWorld); if (dynamicsWorld) { @@ -43,10 +43,8 @@ void ObjectAction::updateAction(btCollisionWorld* collisionWorld, btScalar delta if (expiresWhen > 0) { quint64 now = usecTimestampNow(); if (now > expiresWhen) { - EntityItemPointer ownerEntity = nullptr; QUuid myID; withWriteLock([&]{ - ownerEntity = _ownerEntity.lock(); _active = false; myID = getID(); });