| // Copyright 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "config.h" |
| |
| #include "CCScopedTexture.h" |
| |
| namespace cc { |
| |
| CCScopedTexture::CCScopedTexture(CCResourceProvider* resourceProvider) |
| : m_resourceProvider(resourceProvider) |
| { |
| ASSERT(m_resourceProvider); |
| } |
| |
| CCScopedTexture::~CCScopedTexture() |
| { |
| free(); |
| } |
| |
| bool CCScopedTexture::allocate(int pool, const IntSize& size, GC3Denum format, CCResourceProvider::TextureUsageHint hint) |
| { |
| ASSERT(!id()); |
| ASSERT(!size.isEmpty()); |
| |
| setDimensions(size, format); |
| setId(m_resourceProvider->createResource(pool, size, format, hint)); |
| |
| #if !ASSERT_DISABLED |
| m_allocateThreadIdentifier = base::PlatformThread::CurrentId(); |
| #endif |
| |
| return id(); |
| } |
| |
| void CCScopedTexture::free() |
| { |
| if (id()) { |
| ASSERT(m_allocateThreadIdentifier == base::PlatformThread::CurrentId()); |
| m_resourceProvider->deleteResource(id()); |
| } |
| setId(0); |
| } |
| |
| void CCScopedTexture::leak() |
| { |
| setId(0); |
| } |
| |
| } |