Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: ui/compositor/compositor.cc

Issue 10832355: Prepare ui/compositor for WebLayer type change (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/threading/thread_restrictions.h" 10 #include "base/threading/thread_restrictions.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 disable_schedule_composite_(false) { 143 disable_schedule_composite_(false) {
144 WebKit::WebLayerTreeView::Settings settings; 144 WebKit::WebLayerTreeView::Settings settings;
145 CommandLine* command_line = CommandLine::ForCurrentProcess(); 145 CommandLine* command_line = CommandLine::ForCurrentProcess();
146 settings.showFPSCounter = 146 settings.showFPSCounter =
147 command_line->HasSwitch(switches::kUIShowFPSCounter); 147 command_line->HasSwitch(switches::kUIShowFPSCounter);
148 settings.showPlatformLayerTree = 148 settings.showPlatformLayerTree =
149 command_line->HasSwitch(switches::kUIShowLayerTree); 149 command_line->HasSwitch(switches::kUIShowLayerTree);
150 settings.refreshRate = 150 settings.refreshRate =
151 test_compositor_enabled ? kTestRefreshRate : kDefaultRefreshRate; 151 test_compositor_enabled ? kTestRefreshRate : kDefaultRefreshRate;
152 152
153 #if defined(WEBLAYER_IS_PURE_VIRTUAL)
154 host_.initialize(this, *root_web_layer_, settings);
155 root_web_layer_->setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
156 #else
153 host_.initialize(this, root_web_layer_, settings); 157 host_.initialize(this, root_web_layer_, settings);
158 root_web_layer_.setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
159 #endif
154 host_.setSurfaceReady(); 160 host_.setSurfaceReady();
155 root_web_layer_.setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
156 } 161 }
157 162
158 Compositor::~Compositor() { 163 Compositor::~Compositor() {
159 // Don't call |CompositorDelegate::ScheduleDraw| from this point. 164 // Don't call |CompositorDelegate::ScheduleDraw| from this point.
160 delegate_ = NULL; 165 delegate_ = NULL;
166 #if !defined(WEBLAYER_IS_PURE_VIRTUAL)
161 // There's a cycle between |root_web_layer_| and |host_|, which results in 167 // There's a cycle between |root_web_layer_| and |host_|, which results in
162 // leaking and/or crashing. Explicitly set the root layer to NULL so the cycle 168 // leaking and/or crashing. Explicitly set the root layer to NULL so the cycle
163 // is broken. 169 // is broken.
164 host_.setRootLayer(NULL); 170 host_.setRootLayer(NULL);
165 if (root_layer_) 171 if (root_layer_)
166 root_layer_->SetCompositor(NULL); 172 root_layer_->SetCompositor(NULL);
piman 2012/08/16 23:55:30 I'm pretty sure we still want to do this
173 #endif
167 174
168 // Stop all outstanding draws before telling the ContextFactory to tear 175 // Stop all outstanding draws before telling the ContextFactory to tear
169 // down any contexts that the |host_| may rely upon. 176 // down any contexts that the |host_| may rely upon.
170 host_.reset(); 177 host_.reset();
171 178
172 if (!test_compositor_enabled) 179 if (!test_compositor_enabled)
173 ContextFactory::GetInstance()->RemoveCompositor(this); 180 ContextFactory::GetInstance()->RemoveCompositor(this);
174 } 181 }
175 182
176 void Compositor::Initialize(bool use_thread) { 183 void Compositor::Initialize(bool use_thread) {
(...skipping 28 matching lines...) Expand all
205 } 212 }
206 213
207 void Compositor::SetRootLayer(Layer* root_layer) { 214 void Compositor::SetRootLayer(Layer* root_layer) {
208 if (root_layer_ == root_layer) 215 if (root_layer_ == root_layer)
209 return; 216 return;
210 if (root_layer_) 217 if (root_layer_)
211 root_layer_->SetCompositor(NULL); 218 root_layer_->SetCompositor(NULL);
212 root_layer_ = root_layer; 219 root_layer_ = root_layer;
213 if (root_layer_ && !root_layer_->GetCompositor()) 220 if (root_layer_ && !root_layer_->GetCompositor())
214 root_layer_->SetCompositor(this); 221 root_layer_->SetCompositor(this);
222 #if defined(WEBLAYER_IS_PURE_VIRTUAL)
223 root_web_layer_->removeAllChildren();
224 if (root_layer_)
225 root_web_layer_->addChild(root_layer_->web_layer());
226 #else
215 root_web_layer_.removeAllChildren(); 227 root_web_layer_.removeAllChildren();
216 if (root_layer_) 228 if (root_layer_)
217 root_web_layer_.addChild(root_layer_->web_layer()); 229 root_web_layer_.addChild(root_layer_->web_layer());
230 #endif
218 } 231 }
219 232
220 void Compositor::Draw(bool force_clear) { 233 void Compositor::Draw(bool force_clear) {
221 if (!root_layer_) 234 if (!root_layer_)
222 return; 235 return;
223 236
224 last_started_frame_++; 237 last_started_frame_++;
225 if (!g_compositor_thread) 238 if (!g_compositor_thread)
226 FOR_EACH_OBSERVER(CompositorObserver, 239 FOR_EACH_OBSERVER(CompositorObserver,
227 observer_list_, 240 observer_list_,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 } 274 }
262 return false; 275 return false;
263 } 276 }
264 277
265 void Compositor::SetScaleAndSize(float scale, const gfx::Size& size_in_pixel) { 278 void Compositor::SetScaleAndSize(float scale, const gfx::Size& size_in_pixel) {
266 DCHECK_GT(scale, 0); 279 DCHECK_GT(scale, 0);
267 if (size_in_pixel.IsEmpty() || scale <= 0) 280 if (size_in_pixel.IsEmpty() || scale <= 0)
268 return; 281 return;
269 size_ = size_in_pixel; 282 size_ = size_in_pixel;
270 host_.setViewportSize(size_in_pixel); 283 host_.setViewportSize(size_in_pixel);
284 #if defined(WEBLAYER_IS_PURE_VIRTUAL)
285 root_web_layer_->setBounds(size_in_pixel);
286 #else
271 root_web_layer_.setBounds(size_in_pixel); 287 root_web_layer_.setBounds(size_in_pixel);
288 #endif
272 289
273 if (device_scale_factor_ != scale) { 290 if (device_scale_factor_ != scale) {
274 device_scale_factor_ = scale; 291 device_scale_factor_ = scale;
275 if (root_layer_) 292 if (root_layer_)
276 root_layer_->OnDeviceScaleFactorChanged(scale); 293 root_layer_->OnDeviceScaleFactorChanged(scale);
277 } 294 }
278 } 295 }
279 296
280 void Compositor::AddObserver(CompositorObserver* observer) { 297 void Compositor::AddObserver(CompositorObserver* observer) {
281 observer_list_.AddObserver(observer); 298 observer_list_.AddObserver(observer);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 477
461 COMPOSITOR_EXPORT void DisableTestCompositor() { 478 COMPOSITOR_EXPORT void DisableTestCompositor() {
462 test_compositor_enabled = false; 479 test_compositor_enabled = false;
463 } 480 }
464 481
465 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() { 482 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() {
466 return test_compositor_enabled; 483 return test_compositor_enabled;
467 } 484 }
468 485
469 } // namespace ui 486 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/compositor.h ('k') | ui/compositor/layer.h » ('j') | ui/compositor/layer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698