Edit

kc3-lang/angle/src/libANGLE/renderer/DisplayImpl.cpp

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2015-04-01 14:17:07
    Hash : c30c424f
    Message : Make egl::Surface ref-counted. This will let us store references to Surface in FBO attachments, even after the surface is destroyed. BUG=angleproject:963 Change-Id: I7e1cb161d1e08f78b1c4d730a32ad09ac7e61e30 Reviewed-on: https://chromium-review.googlesource.com/263482 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>

  • src/libANGLE/renderer/DisplayImpl.cpp
  • //
    // Copyright (c) 2014 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.
    //
    
    // DisplayImpl.cpp: Implementation methods of egl::Display
    
    #include "libANGLE/renderer/DisplayImpl.h"
    
    #include "libANGLE/Surface.h"
    
    namespace rx
    {
    
    DisplayImpl::DisplayImpl()
        : mExtensionsInitialized(false),
          mCapsInitialized(false)
    {
    }
    
    DisplayImpl::~DisplayImpl()
    {
        while (!mSurfaceSet.empty())
        {
            destroySurface(*mSurfaceSet.begin());
        }
    }
    
    void DisplayImpl::destroySurface(egl::Surface *surface)
    {
        mSurfaceSet.erase(surface);
        surface->release();
    }
    
    const egl::DisplayExtensions &DisplayImpl::getExtensions() const
    {
        if (!mExtensionsInitialized)
        {
            generateExtensions(&mExtensions);
            mExtensionsInitialized = true;
        }
    
        return mExtensions;
    }
    
    const egl::Caps &DisplayImpl::getCaps() const
    {
        if (!mCapsInitialized)
        {
            generateCaps(&mCaps);
            mCapsInitialized = true;
        }
    
        return mCaps;
    }
    
    }