mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-05 06:20:10 +00:00
44 lines
934 B
C++
44 lines
934 B
C++
// ASE base library
|
|
// Copyright (C) 2001-2010 David Capello
|
|
//
|
|
// This source file is ditributed under a BSD-like license, please
|
|
// read LICENSE.txt for more information.
|
|
|
|
#ifndef BASE_SCOPED_LOCK_H_INCLUDED
|
|
#define BASE_SCOPED_LOCK_H_INCLUDED
|
|
|
|
#include "base/disable_copying.h"
|
|
|
|
// An object to safely lock and unlock mutexes.
|
|
//
|
|
// The constructor of ScopedLock locks the mutex, and the destructor
|
|
// unlocks the mutex. In this way you can safely use ScopedLock inside
|
|
// a try/catch block without worrying about the lock state of the
|
|
// mutex if some exception is thrown.
|
|
class ScopedLock
|
|
{
|
|
public:
|
|
|
|
ScopedLock(Mutex& mutex) : m_mutex(mutex) {
|
|
m_mutex.lock();
|
|
}
|
|
|
|
~ScopedLock() {
|
|
m_mutex.unlock();
|
|
}
|
|
|
|
Mutex& getMutex() const {
|
|
return m_mutex;
|
|
}
|
|
|
|
private:
|
|
Mutex& m_mutex;
|
|
|
|
// Undefined constructors.
|
|
ScopedLock();
|
|
DISABLE_COPYING(ScopedLock);
|
|
|
|
};
|
|
|
|
#endif
|