1 // Copyright 2013 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_UI_RESOURCE_H_ 6 #define CC_RESOURCES_SCOPED_UI_RESOURCE_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "cc/base/cc_export.h" 10 #include "cc/resources/ui_resource_bitmap.h" 11 #include "cc/resources/ui_resource_client.h" 12 #include "ui/gfx/size.h" 13 14 namespace cc { 15 16 class LayerTreeHost; 17 18 // ScopedUIResource creates an UIResource from a bitmap and a LayerTreeHost. 19 // This class holds a pointer to the host so that when the instance goes out of 20 // scope, the created resource is deleted. On a GetBitmap call from the 21 // UIResource manager, ScopeUIResource always returns the reference to the 22 // initially given bitmap regardless of whether the request was due to lost 23 // resource or not. 24 class CC_EXPORT ScopedUIResource : public UIResourceClient { 25 public: 26 static scoped_ptr<ScopedUIResource> Create(LayerTreeHost* host, 27 const UIResourceBitmap& bitmap); 28 virtual ~ScopedUIResource(); 29 30 // UIResourceClient implementation. 31 virtual UIResourceBitmap GetBitmap(UIResourceId uid, 32 bool resource_lost) OVERRIDE; 33 UIResourceId id() { return id_; } 34 35 protected: 36 ScopedUIResource(LayerTreeHost* host, const UIResourceBitmap& bitmap); 37 38 UIResourceBitmap bitmap_; 39 LayerTreeHost* host_; 40 UIResourceId id_; 41 42 private: 43 DISALLOW_COPY_AND_ASSIGN(ScopedUIResource); 44 }; 45 46 } // namespace cc 47 48 #endif // CC_RESOURCES_SCOPED_UI_RESOURCE_H_ 49