scoped_resource.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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(const gfx::Size& size, 29 ResourceProvider::TextureUsageHint 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#ifndef NDEBUG 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