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 18 namespace cc { 19 20 class CC_EXPORT ScopedResource : public Resource { 21 public: Create(ResourceProvider * resource_provider)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