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 #if DCHECK_IS_ON 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(const gfx::Size& size, 29 ResourceProvider::TextureHint hint, 30 ResourceFormat format); 31 void AllocateManaged(const gfx::Size& size, 32 GLenum target, 33 ResourceFormat format); 34 void Free(); 35 void Leak(); 36 37 protected: 38 explicit ScopedResource(ResourceProvider* provider); 39 40 private: 41 ResourceProvider* resource_provider_; 42 43 #if DCHECK_IS_ON 44 base::PlatformThreadId allocate_thread_id_; 45 #endif 46 47 DISALLOW_COPY_AND_ASSIGN(ScopedResource); 48 }; 49 50 } // namespace cc 51 52 #endif // CC_RESOURCES_SCOPED_RESOURCE_H_ 53