text: // 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);
  }
  
  }
  