From f31cbc2db649a1fa3119c330b84c2731bf63d778 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 3 Aug 2003 18:28:11 +0000 Subject: [PATCH] Added SetTo() methods to the AutoLocker. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4221 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../disk_device_manager/KDiskDeviceUtils.h | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h b/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h index 7bce6d07c7..a8b65a5523 100644 --- a/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h +++ b/headers/private/kernel/disk_device_manager/KDiskDeviceUtils.h @@ -155,18 +155,30 @@ public: _Unlock(); } - inline AutoLocker &operator=(Lockable *lockable) + inline void SetTo(Lockable *lockable, bool alreadyLocked) { _Unlock(); fLockable = lockable; - _Lock(); + fLocked = alreadyLocked; + if (!fLocked) + _Lock(); + } + + inline void SetTo(Lockable &lockable, bool alreadyLocked) + { + SetTo(&lockable, alreadyLocked); + } + + inline AutoLocker &operator=(Lockable *lockable) + { + SetTo(lockable); + return *this; } inline AutoLocker &operator=(Lockable &lockable) { - _Unlock(); - fLockable = &lockable; - _Lock(); + SetTo(&lockable); + return *this; } inline bool IsLocked() const { return fLocked; }