scoped_resource.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1// Copyright 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CC_RESOURCES_SCOPED_RESOURCE_H_ 6#define CC_RESOURCES_SCOPED_RESOURCE_H_ 7 8#include "base/basictypes.h" 9#include "base/logging.h" 10#include "base/memory/scoped_ptr.h" 11#include "cc/base/cc_export.h" 12#include "cc/resources/resource.h" 13 14#ifndef NDEBUG 15#include "base/threading/platform_thread.h" 16#endif 17 18namespace cc { 19 20class CC_EXPORT ScopedResource : public Resource { 21 public: 22 static scoped_ptr<ScopedResource> Create( 23 ResourceProvider* resource_provider) { 24 return make_scoped_ptr(new ScopedResource(resource_provider)); 25 } 26 virtual ~ScopedResource(); 27 28 void Allocate(gfx::Size size, 29 ResourceProvider::TextureUsageHint hint, 30 ResourceFormat format); 31 void AllocateManaged(gfx::Size size, GLenum target, ResourceFormat format); 32 void Free(); 33 void Leak(); 34 35 protected: 36 explicit ScopedResource(ResourceProvider* provider); 37 38 private: 39 ResourceProvider* resource_provider_; 40 41#ifndef NDEBUG 42 base::PlatformThreadId allocate_thread_id_; 43#endif 44 45 DISALLOW_COPY_AND_ASSIGN(ScopedResource); 46}; 47 48} // namespace cc 49 50#endif // CC_RESOURCES_SCOPED_RESOURCE_H_ 51