diff options
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/RefCountObject.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libANGLE/RefCountObject.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/RefCountObject.cpp b/src/3rdparty/angle/src/libANGLE/RefCountObject.cpp new file mode 100644 index 0000000000..b1210200cf --- /dev/null +++ b/src/3rdparty/angle/src/libANGLE/RefCountObject.cpp @@ -0,0 +1,39 @@ +// +// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +// + +// RefCountObject.cpp: Defines the gl::RefCountObject base class that provides +// lifecycle support for GL objects using the traditional BindObject scheme, but +// that need to be reference counted for correct cross-context deletion. +// (Concretely, textures, buffers and renderbuffers.) + +#include "RefCountObject.h" + +RefCountObject::RefCountObject(GLuint id) + : mId(id), + mRefCount(0) +{ +} + +RefCountObject::~RefCountObject() +{ + ASSERT(mRefCount == 0); +} + +void RefCountObject::addRef() const +{ + mRefCount++; +} + +void RefCountObject::release() const +{ + ASSERT(mRefCount > 0); + + if (--mRefCount == 0) + { + delete this; + } +} + |