OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "ui/compositor/compositor.h" | 5 #include "ui/compositor/compositor.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <deque> | 8 #include <deque> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 | 155 |
156 CancelCompositorLock(); | 156 CancelCompositorLock(); |
157 DCHECK(!compositor_lock_); | 157 DCHECK(!compositor_lock_); |
158 | 158 |
159 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, | 159 FOR_EACH_OBSERVER(CompositorObserver, observer_list_, |
160 OnCompositingShuttingDown(this)); | 160 OnCompositingShuttingDown(this)); |
161 | 161 |
162 DCHECK(begin_frame_observer_list_.empty()); | 162 DCHECK(begin_frame_observer_list_.empty()); |
163 | 163 |
164 if (root_layer_) | 164 if (root_layer_) |
165 root_layer_->SetCompositor(NULL); | 165 root_layer_->ResetCompositor(); |
166 | 166 |
167 // Stop all outstanding draws before telling the ContextFactory to tear | 167 // Stop all outstanding draws before telling the ContextFactory to tear |
168 // down any contexts that the |host_| may rely upon. | 168 // down any contexts that the |host_| may rely upon. |
169 host_.reset(); | 169 host_.reset(); |
170 | 170 |
171 context_factory_->RemoveCompositor(this); | 171 context_factory_->RemoveCompositor(this); |
172 } | 172 } |
173 | 173 |
174 void Compositor::SetOutputSurface( | 174 void Compositor::SetOutputSurface( |
175 scoped_ptr<cc::OutputSurface> output_surface) { | 175 scoped_ptr<cc::OutputSurface> output_surface) { |
176 host_->SetOutputSurface(output_surface.Pass()); | 176 host_->SetOutputSurface(output_surface.Pass()); |
177 } | 177 } |
178 | 178 |
179 void Compositor::ScheduleDraw() { | 179 void Compositor::ScheduleDraw() { |
180 host_->SetNeedsCommit(); | 180 host_->SetNeedsCommit(); |
181 } | 181 } |
182 | 182 |
183 void Compositor::SetRootLayer(Layer* root_layer) { | 183 void Compositor::SetRootLayer(Layer* root_layer) { |
184 if (root_layer_ == root_layer) | 184 if (root_layer_ == root_layer) |
185 return; | 185 return; |
186 if (root_layer_) | 186 if (root_layer_) |
187 root_layer_->SetCompositor(NULL); | 187 root_layer_->ResetCompositor(); |
188 root_layer_ = root_layer; | 188 root_layer_ = root_layer; |
189 if (root_layer_ && !root_layer_->GetCompositor()) | |
190 root_layer_->SetCompositor(this); | |
191 root_web_layer_->RemoveAllChildren(); | 189 root_web_layer_->RemoveAllChildren(); |
192 if (root_layer_) | 190 if (root_layer_) |
193 root_web_layer_->AddChild(root_layer_->cc_layer()); | 191 root_layer_->SetCompositor(this, root_web_layer_); |
194 } | 192 } |
195 | 193 |
196 void Compositor::SetHostHasTransparentBackground( | 194 void Compositor::SetHostHasTransparentBackground( |
197 bool host_has_transparent_background) { | 195 bool host_has_transparent_background) { |
198 host_->set_has_transparent_background(host_has_transparent_background); | 196 host_->set_has_transparent_background(host_has_transparent_background); |
199 } | 197 } |
200 | 198 |
201 void Compositor::ScheduleFullRedraw() { | 199 void Compositor::ScheduleFullRedraw() { |
202 // TODO(enne): Some callers (mac) call this function expecting that it | 200 // TODO(enne): Some callers (mac) call this function expecting that it |
203 // will also commit. This should probably just redraw the screen | 201 // will also commit. This should probably just redraw the screen |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 observer_list_, | 422 observer_list_, |
425 OnCompositingLockStateChanged(this)); | 423 OnCompositingLockStateChanged(this)); |
426 } | 424 } |
427 | 425 |
428 void Compositor::CancelCompositorLock() { | 426 void Compositor::CancelCompositorLock() { |
429 if (compositor_lock_) | 427 if (compositor_lock_) |
430 compositor_lock_->CancelLock(); | 428 compositor_lock_->CancelLock(); |
431 } | 429 } |
432 | 430 |
433 } // namespace ui | 431 } // namespace ui |
OLD | NEW |