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: 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 bool Allocate(gfx::Size size, 29 GLenum format, 30 ResourceProvider::TextureUsageHint hint); 31 void Free(); 32 void Leak(); 33 34 protected: 35 explicit ScopedResource(ResourceProvider* provider); 36 37 private: 38 ResourceProvider* resource_provider_; 39 40 #ifndef NDEBUG 41 base::PlatformThreadId allocate_thread_id_; 42 #endif 43 44 DISALLOW_COPY_AND_ASSIGN(ScopedResource); 45 }; 46 47 } // namespace cc 48 49 #endif // CC_RESOURCES_SCOPED_RESOURCE_H_ 50