Edit

kc3-lang/angle/src/libANGLE/RefCountObject.cpp

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2015-03-09 14:28:02
    Hash : 1f40291c
    Message : Remove the non-templated RefCountObjectBindingPointer class. This allows the regular BindingPointer class to template on const types. Also added assignment and copy operators that don't leak the resources. BUG=angleproject:880 Change-Id: If3efa26a7fa89306d783c3e8a5fb92b16861d77a Reviewed-on: https://chromium-review.googlesource.com/257670 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/RefCountObject.cpp
  • //
    // 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;
        }
    }