diff options
Diffstat (limited to 'chromium/cc/resources/scoped_resource.h')
-rw-r--r-- | chromium/cc/resources/scoped_resource.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/chromium/cc/resources/scoped_resource.h b/chromium/cc/resources/scoped_resource.h new file mode 100644 index 00000000000..6a2c8f1e727 --- /dev/null +++ b/chromium/cc/resources/scoped_resource.h @@ -0,0 +1,49 @@ +// Copyright 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CC_RESOURCES_SCOPED_RESOURCE_H_ +#define CC_RESOURCES_SCOPED_RESOURCE_H_ + +#include "base/basictypes.h" +#include "base/logging.h" +#include "base/memory/scoped_ptr.h" +#include "cc/base/cc_export.h" +#include "cc/resources/resource.h" + +#ifndef NDEBUG +#include "base/threading/platform_thread.h" +#endif + +namespace cc { + +class CC_EXPORT ScopedResource : public Resource { + public: + static scoped_ptr<ScopedResource> create( + ResourceProvider* resource_provider) { + return make_scoped_ptr(new ScopedResource(resource_provider)); + } + virtual ~ScopedResource(); + + bool Allocate(gfx::Size size, + GLenum format, + ResourceProvider::TextureUsageHint hint); + void Free(); + void Leak(); + + protected: + explicit ScopedResource(ResourceProvider* provider); + + private: + ResourceProvider* resource_provider_; + +#ifndef NDEBUG + base::PlatformThreadId allocate_thread_id_; +#endif + + DISALLOW_COPY_AND_ASSIGN(ScopedResource); +}; + +} // namespace cc + +#endif // CC_RESOURCES_SCOPED_RESOURCE_H_ |