| OLD | NEW |
| (Empty) | |
| 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_LAYERS_DELEGATED_FRAME_PROVIDER_H_ |
| 6 #define CC_LAYERS_DELEGATED_FRAME_PROVIDER_H_ |
| 7 |
| 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "cc/base/cc_export.h" |
| 10 #include "cc/resources/return_callback.h" |
| 11 #include "cc/resources/returned_resource.h" |
| 12 #include "ui/gfx/rect_f.h" |
| 13 #include "ui/gfx/size.h" |
| 14 |
| 15 namespace cc { |
| 16 class DelegatedFrameData; |
| 17 class DelegatedFrameResourceCollection; |
| 18 class DelegatedRendererLayer; |
| 19 |
| 20 // Only one observing layer has ownership of the DelegatedFrameProvider. Only |
| 21 // the active observer should call GetFrameDataAndRefResources(). All frames |
| 22 // provided by a single DelegatedFrameProvider must have the same size. A new |
| 23 // provider must be used for frames of a different size. |
| 24 class CC_EXPORT DelegatedFrameProvider { |
| 25 public: |
| 26 explicit DelegatedFrameProvider( |
| 27 DelegatedFrameResourceCollection* resource_collection, |
| 28 scoped_ptr<DelegatedFrameData> frame); |
| 29 ~DelegatedFrameProvider(); |
| 30 |
| 31 void SetObserver(DelegatedRendererLayer* observer); |
| 32 bool IsObserver(DelegatedRendererLayer* observer) const; |
| 33 |
| 34 void SetFrameData(scoped_ptr<DelegatedFrameData> frame); |
| 35 |
| 36 // The DelegatedFrameData returned here must be displayed in order to not |
| 37 // lose track of damage. |
| 38 DelegatedFrameData* GetFrameDataAndRefResources( |
| 39 DelegatedRendererLayer* observer, |
| 40 gfx::RectF* damage); |
| 41 |
| 42 ReturnCallback GetReturnResourcesCallbackForImplThread(); |
| 43 void ReturnUnusedResources(const ReturnedResourceArray& unused); |
| 44 |
| 45 gfx::Size frame_size() const { return frame_size_; } |
| 46 |
| 47 private: |
| 48 DelegatedFrameResourceCollection* resource_collection_; |
| 49 DelegatedRendererLayer* frame_observer_; |
| 50 |
| 51 scoped_ptr<DelegatedFrameData> frame_; |
| 52 gfx::RectF damage_; |
| 53 bool own_frame_resources_; |
| 54 |
| 55 gfx::Size frame_size_; |
| 56 |
| 57 DISALLOW_COPY_AND_ASSIGN(DelegatedFrameProvider); |
| 58 }; |
| 59 |
| 60 } // namespace cc |
| 61 |
| 62 #endif // CC_LAYERS_DELEGATED_FRAME_PROVIDER_H_ |
| OLD | NEW |