OLD | NEW |
1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CC_LAYERS_TEXTURE_LAYER_H_ | 5 #ifndef CC_LAYERS_TEXTURE_LAYER_H_ |
6 #define CC_LAYERS_TEXTURE_LAYER_H_ | 6 #define CC_LAYERS_TEXTURE_LAYER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 public: | 27 public: |
28 // If this texture layer requires special preparation logic for each frame | 28 // If this texture layer requires special preparation logic for each frame |
29 // driven by the compositor, pass in a non-nil client. Pass in a nil client | 29 // driven by the compositor, pass in a non-nil client. Pass in a nil client |
30 // pointer if texture updates are driven by an external process. | 30 // pointer if texture updates are driven by an external process. |
31 static scoped_refptr<TextureLayer> Create(TextureLayerClient* client); | 31 static scoped_refptr<TextureLayer> Create(TextureLayerClient* client); |
32 | 32 |
33 // Used when mailbox names are specified instead of texture IDs. | 33 // Used when mailbox names are specified instead of texture IDs. |
34 static scoped_refptr<TextureLayer> CreateForMailbox( | 34 static scoped_refptr<TextureLayer> CreateForMailbox( |
35 TextureLayerClient* client); | 35 TextureLayerClient* client); |
36 | 36 |
37 // Resets the client, which also resets the texture. This may synchronize with | |
38 // the impl thread if it is currently drawing a texture or a mailbox from the | |
39 // client. After this call it is safe to destroy the texture / mailbox. | |
40 void ClearClient(); | 37 void ClearClient(); |
41 | 38 |
42 // Resets the texture. This may synchronize with the impl thread if it is | |
43 // currently drawing a texture or a mailbox from the client. After this call | |
44 // it is safe to destroy the texture / mailbox. | |
45 void ClearTexture(); | |
46 | |
47 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) | 39 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) |
48 OVERRIDE; | 40 OVERRIDE; |
49 | 41 |
50 // Sets whether this texture should be Y-flipped at draw time. Defaults to | 42 // Sets whether this texture should be Y-flipped at draw time. Defaults to |
51 // true. | 43 // true. |
52 void SetFlipped(bool flipped); | 44 void SetFlipped(bool flipped); |
53 | 45 |
54 // Sets a UV transform to be used at draw time. Defaults to (0, 0) and (1, 1). | 46 // Sets a UV transform to be used at draw time. Defaults to (0, 0) and (1, 1). |
55 void SetUV(gfx::PointF top_left, gfx::PointF bottom_right); | 47 void SetUV(gfx::PointF top_left, gfx::PointF bottom_right); |
56 | 48 |
(...skipping 10 matching lines...) Expand all Loading... |
67 | 59 |
68 // Sets whether the texture should be blended with the background color | 60 // Sets whether the texture should be blended with the background color |
69 // at draw time. Defaults to false. | 61 // at draw time. Defaults to false. |
70 void SetBlendBackgroundColor(bool blend); | 62 void SetBlendBackgroundColor(bool blend); |
71 | 63 |
72 // Sets whether this context should rate limit on damage to prevent too many | 64 // Sets whether this context should rate limit on damage to prevent too many |
73 // frames from being queued up before the compositor gets a chance to run. | 65 // frames from being queued up before the compositor gets a chance to run. |
74 // Requires a non-nil client. Defaults to false. | 66 // Requires a non-nil client. Defaults to false. |
75 void SetRateLimitContext(bool rate_limit); | 67 void SetRateLimitContext(bool rate_limit); |
76 | 68 |
| 69 // Code path for plugins which supply their own texture ID. |
| 70 void SetTextureId(unsigned texture_id); |
| 71 |
77 // Code path for plugins which supply their own mailbox. | 72 // Code path for plugins which supply their own mailbox. |
78 bool uses_mailbox() const { return uses_mailbox_; } | 73 bool uses_mailbox() const { return uses_mailbox_; } |
79 void SetTextureMailbox(const TextureMailbox& mailbox); | 74 void SetTextureMailbox(const TextureMailbox& mailbox); |
80 | 75 |
| 76 void WillModifyTexture(); |
| 77 |
81 virtual void SetNeedsDisplayRect(const gfx::RectF& dirty_rect) OVERRIDE; | 78 virtual void SetNeedsDisplayRect(const gfx::RectF& dirty_rect) OVERRIDE; |
82 | 79 |
83 virtual void SetLayerTreeHost(LayerTreeHost* layer_tree_host) OVERRIDE; | 80 virtual void SetLayerTreeHost(LayerTreeHost* layer_tree_host) OVERRIDE; |
84 virtual bool DrawsContent() const OVERRIDE; | 81 virtual bool DrawsContent() const OVERRIDE; |
85 virtual bool Update(ResourceUpdateQueue* queue, | 82 virtual bool Update(ResourceUpdateQueue* queue, |
86 const OcclusionTracker* occlusion) OVERRIDE; | 83 const OcclusionTracker* occlusion) OVERRIDE; |
87 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; | 84 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; |
88 virtual bool BlocksPendingCommit() const OVERRIDE; | 85 virtual bool BlocksPendingCommit() const OVERRIDE; |
89 | 86 |
90 virtual bool CanClipSelf() const OVERRIDE; | 87 virtual bool CanClipSelf() const OVERRIDE; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 // are only used on the main thread, or on the impl thread during commit | 128 // are only used on the main thread, or on the impl thread during commit |
132 // where the main thread is blocked. | 129 // where the main thread is blocked. |
133 const scoped_refptr<base::MessageLoopProxy> message_loop_; | 130 const scoped_refptr<base::MessageLoopProxy> message_loop_; |
134 unsigned internal_references_; | 131 unsigned internal_references_; |
135 TextureMailbox mailbox_; | 132 TextureMailbox mailbox_; |
136 unsigned sync_point_; | 133 unsigned sync_point_; |
137 bool is_lost_; | 134 bool is_lost_; |
138 DISALLOW_COPY_AND_ASSIGN(MailboxHolder); | 135 DISALLOW_COPY_AND_ASSIGN(MailboxHolder); |
139 }; | 136 }; |
140 | 137 |
141 // Returns true if we draw content coming from the client, which implies we | |
142 // may need to synchronize with the impl thread when the client goes away. | |
143 bool DrawsClientData() const; | |
144 | |
145 TextureLayerClient* client_; | 138 TextureLayerClient* client_; |
146 bool uses_mailbox_; | 139 bool uses_mailbox_; |
147 | 140 |
148 bool flipped_; | 141 bool flipped_; |
149 gfx::PointF uv_top_left_; | 142 gfx::PointF uv_top_left_; |
150 gfx::PointF uv_bottom_right_; | 143 gfx::PointF uv_bottom_right_; |
151 // [bottom left, top left, top right, bottom right] | 144 // [bottom left, top left, top right, bottom right] |
152 float vertex_opacity_[4]; | 145 float vertex_opacity_[4]; |
153 bool premultiplied_alpha_; | 146 bool premultiplied_alpha_; |
154 bool blend_background_color_; | 147 bool blend_background_color_; |
155 bool rate_limit_context_; | 148 bool rate_limit_context_; |
156 bool impl_may_draw_client_data_; | 149 bool content_committed_; |
157 | 150 |
158 unsigned texture_id_; | 151 unsigned texture_id_; |
159 scoped_ptr<MailboxHolder::MainThreadReference> holder_ref_; | 152 scoped_ptr<MailboxHolder::MainThreadReference> holder_ref_; |
160 bool needs_set_mailbox_; | 153 bool needs_set_mailbox_; |
161 | 154 |
162 DISALLOW_COPY_AND_ASSIGN(TextureLayer); | 155 DISALLOW_COPY_AND_ASSIGN(TextureLayer); |
163 }; | 156 }; |
164 | 157 |
165 } // namespace cc | 158 } // namespace cc |
166 #endif // CC_LAYERS_TEXTURE_LAYER_H_ | 159 #endif // CC_LAYERS_TEXTURE_LAYER_H_ |
OLD | NEW |