12 #ifndef ROOT_TGLLockable_H
13 #define ROOT_TGLLockable_H
20 enum ELock { kUnlocked,
27 TGLLockable(
const TGLLockable&);
28 TGLLockable& operator=(
const TGLLockable&);
38 TUnlocker(
const TUnlocker&);
39 TUnlocker& operator=(
const TUnlocker&);
41 const TGLLockable *fLockable;
44 TUnlocker(
const TGLLockable* l) : fLockable(l) {}
47 if (fLockable->IsLocked())
48 fLockable->ReleaseLock(fLockable->CurrentLock());
54 virtual ~TGLLockable() {}
56 virtual const char* LockIdStr()
const {
return "<unknown>"; }
58 Bool_t TakeLock(ELock lock)
const;
59 Bool_t ReleaseLock(ELock lock)
const;
60 Bool_t IsLocked()
const {
return (fLock != kUnlocked); }
61 ELock CurrentLock()
const {
return fLock; }
63 Bool_t IsDrawOrSelectLock()
const {
return fLock == kDrawLock || fLock == kSelectLock; }
65 static const char * LockName(ELock lock);
66 static Bool_t LockValid(ELock lock);
68 ClassDef(TGLLockable, 0);