From 4c0628c24de529da3575ddbf4c10a02f81d3ac9e Mon Sep 17 00:00:00 2001 From: Yonas Habteab Date: Thu, 3 Jul 2025 12:14:31 +0200 Subject: [PATCH] Allow to defer lock on `ObjectLock` --- lib/base/objectlock.cpp | 12 ++++++++++++ lib/base/objectlock.hpp | 1 + 2 files changed, 13 insertions(+) diff --git a/lib/base/objectlock.cpp b/lib/base/objectlock.cpp index fc0c7c631..fad59160b 100644 --- a/lib/base/objectlock.cpp +++ b/lib/base/objectlock.cpp @@ -18,6 +18,18 @@ ObjectLock::ObjectLock(const Object::Ptr& object) { } +/** + * Constructs a lock for the given object without locking it immediately. + * + * The user must call Lock() explicitly when needed. + * + * @param object The object to lock. + */ +ObjectLock::ObjectLock(const Object::Ptr& object, std::defer_lock_t) + : m_Object(object.get()), m_Locked(false) +{ +} + ObjectLock::ObjectLock(const Object *object) : m_Object(object), m_Locked(false) { diff --git a/lib/base/objectlock.hpp b/lib/base/objectlock.hpp index 8e98641db..abd071c66 100644 --- a/lib/base/objectlock.hpp +++ b/lib/base/objectlock.hpp @@ -15,6 +15,7 @@ struct ObjectLock { public: ObjectLock(const Object::Ptr& object); + ObjectLock(const Object::Ptr& object, std::defer_lock_t); ObjectLock(const Object *object); ObjectLock(const ObjectLock&) = delete;