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

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

Issue 10873052: Add ifdef guards to prepare for WebLayerTreeView interface change (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 3 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
« no previous file with comments | « ui/compositor/compositor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 disable_schedule_composite_(false) { 146 disable_schedule_composite_(false) {
147 WebKit::WebLayerTreeView::Settings settings; 147 WebKit::WebLayerTreeView::Settings settings;
148 CommandLine* command_line = CommandLine::ForCurrentProcess(); 148 CommandLine* command_line = CommandLine::ForCurrentProcess();
149 settings.showFPSCounter = 149 settings.showFPSCounter =
150 command_line->HasSwitch(switches::kUIShowFPSCounter); 150 command_line->HasSwitch(switches::kUIShowFPSCounter);
151 settings.showPlatformLayerTree = 151 settings.showPlatformLayerTree =
152 command_line->HasSwitch(switches::kUIShowLayerTree); 152 command_line->HasSwitch(switches::kUIShowLayerTree);
153 settings.refreshRate = 153 settings.refreshRate =
154 test_compositor_enabled ? kTestRefreshRate : kDefaultRefreshRate; 154 test_compositor_enabled ? kTestRefreshRate : kDefaultRefreshRate;
155 155
156 root_web_layer_->setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
157 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
158 host_.reset(WebKit::WebLayerTreeView::create(this, *root_web_layer_,
159 settings));
160 host_->setSurfaceReady();
161 #else
156 host_.initialize(this, *root_web_layer_, settings); 162 host_.initialize(this, *root_web_layer_, settings);
157 root_web_layer_->setAnchorPoint(WebKit::WebFloatPoint(0.f, 0.f));
158 host_.setSurfaceReady(); 163 host_.setSurfaceReady();
164 #endif
159 } 165 }
160 166
161 Compositor::~Compositor() { 167 Compositor::~Compositor() {
162 // Don't call |CompositorDelegate::ScheduleDraw| from this point. 168 // Don't call |CompositorDelegate::ScheduleDraw| from this point.
163 delegate_ = NULL; 169 delegate_ = NULL;
164 if (root_layer_) 170 if (root_layer_)
165 root_layer_->SetCompositor(NULL); 171 root_layer_->SetCompositor(NULL);
166 172
167 // Stop all outstanding draws before telling the ContextFactory to tear 173 // Stop all outstanding draws before telling the ContextFactory to tear
168 // down any contexts that the |host_| may rely upon. 174 // down any contexts that the |host_| may rely upon.
(...skipping 21 matching lines...) Expand all
190 delete g_compositor_thread; 196 delete g_compositor_thread;
191 g_compositor_thread = NULL; 197 g_compositor_thread = NULL;
192 } 198 }
193 } 199 }
194 200
195 void Compositor::ScheduleDraw() { 201 void Compositor::ScheduleDraw() {
196 if (g_compositor_thread) { 202 if (g_compositor_thread) {
197 // TODO(nduca): Temporary while compositor calls 203 // TODO(nduca): Temporary while compositor calls
198 // compositeImmediately() directly. 204 // compositeImmediately() directly.
199 layout(); 205 layout();
206 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
207 host_->composite();
208 #else
200 host_.composite(); 209 host_.composite();
210 #endif
201 } else if (delegate_) { 211 } else if (delegate_) {
202 delegate_->ScheduleDraw(); 212 delegate_->ScheduleDraw();
203 } 213 }
204 } 214 }
205 215
206 void Compositor::SetRootLayer(Layer* root_layer) { 216 void Compositor::SetRootLayer(Layer* root_layer) {
207 if (root_layer_ == root_layer) 217 if (root_layer_ == root_layer)
208 return; 218 return;
209 if (root_layer_) 219 if (root_layer_)
210 root_layer_->SetCompositor(NULL); 220 root_layer_->SetCompositor(NULL);
(...skipping 11 matching lines...) Expand all
222 232
223 last_started_frame_++; 233 last_started_frame_++;
224 if (!g_compositor_thread) 234 if (!g_compositor_thread)
225 FOR_EACH_OBSERVER(CompositorObserver, 235 FOR_EACH_OBSERVER(CompositorObserver,
226 observer_list_, 236 observer_list_,
227 OnCompositingWillStart(this)); 237 OnCompositingWillStart(this));
228 238
229 // TODO(nduca): Temporary while compositor calls 239 // TODO(nduca): Temporary while compositor calls
230 // compositeImmediately() directly. 240 // compositeImmediately() directly.
231 layout(); 241 layout();
242 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
243 host_->composite();
244 #else
232 host_.composite(); 245 host_.composite();
246 #endif
233 if (!g_compositor_thread && !swap_posted_) 247 if (!g_compositor_thread && !swap_posted_)
234 NotifyEnd(); 248 NotifyEnd();
235 } 249 }
236 250
237 void Compositor::ScheduleFullDraw() { 251 void Compositor::ScheduleFullDraw() {
252 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
253 host_->setNeedsRedraw();
254 #else
238 host_.setNeedsRedraw(); 255 host_.setNeedsRedraw();
256 #endif
239 } 257 }
240 258
241 bool Compositor::ReadPixels(SkBitmap* bitmap, 259 bool Compositor::ReadPixels(SkBitmap* bitmap,
242 const gfx::Rect& bounds_in_pixel) { 260 const gfx::Rect& bounds_in_pixel) {
243 if (bounds_in_pixel.right() > size().width() || 261 if (bounds_in_pixel.right() > size().width() ||
244 bounds_in_pixel.bottom() > size().height()) 262 bounds_in_pixel.bottom() > size().height())
245 return false; 263 return false;
246 // Convert to OpenGL coordinates. 264 // Convert to OpenGL coordinates.
247 gfx::Point new_origin( 265 gfx::Point new_origin(
248 bounds_in_pixel.x(), 266 bounds_in_pixel.x(),
249 size().height() - bounds_in_pixel.height() - bounds_in_pixel.y()); 267 size().height() - bounds_in_pixel.height() - bounds_in_pixel.y());
250 268
251 bitmap->setConfig(SkBitmap::kARGB_8888_Config, 269 bitmap->setConfig(SkBitmap::kARGB_8888_Config,
252 bounds_in_pixel.width(), bounds_in_pixel.height()); 270 bounds_in_pixel.width(), bounds_in_pixel.height());
253 bitmap->allocPixels(); 271 bitmap->allocPixels();
254 SkAutoLockPixels lock_image(*bitmap); 272 SkAutoLockPixels lock_image(*bitmap);
255 unsigned char* pixels = static_cast<unsigned char*>(bitmap->getPixels()); 273 unsigned char* pixels = static_cast<unsigned char*>(bitmap->getPixels());
274 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
275 if (host_->compositeAndReadback(
276 #else
256 if (host_.compositeAndReadback( 277 if (host_.compositeAndReadback(
278 #endif
257 pixels, gfx::Rect(new_origin, bounds_in_pixel.size()))) { 279 pixels, gfx::Rect(new_origin, bounds_in_pixel.size()))) {
258 SwizzleRGBAToBGRAAndFlip(pixels, bounds_in_pixel.size()); 280 SwizzleRGBAToBGRAAndFlip(pixels, bounds_in_pixel.size());
259 return true; 281 return true;
260 } 282 }
261 return false; 283 return false;
262 } 284 }
263 285
264 void Compositor::SetScaleAndSize(float scale, const gfx::Size& size_in_pixel) { 286 void Compositor::SetScaleAndSize(float scale, const gfx::Size& size_in_pixel) {
265 DCHECK_GT(scale, 0); 287 DCHECK_GT(scale, 0);
266 if (size_in_pixel.IsEmpty() || scale <= 0) 288 if (size_in_pixel.IsEmpty() || scale <= 0)
267 return; 289 return;
268 size_ = size_in_pixel; 290 size_ = size_in_pixel;
291 #if defined(WEBLAYERTREEVIEW_IS_PURE_VIRTUAL)
292 host_->setViewportSize(size_in_pixel);
293 #else
269 host_.setViewportSize(size_in_pixel); 294 host_.setViewportSize(size_in_pixel);
295 #endif
270 root_web_layer_->setBounds(size_in_pixel); 296 root_web_layer_->setBounds(size_in_pixel);
271 297
272 if (device_scale_factor_ != scale) { 298 if (device_scale_factor_ != scale) {
273 device_scale_factor_ = scale; 299 device_scale_factor_ = scale;
274 if (root_layer_) 300 if (root_layer_)
275 root_layer_->OnDeviceScaleFactorChanged(scale); 301 root_layer_->OnDeviceScaleFactorChanged(scale);
276 } 302 }
277 } 303 }
278 304
279 void Compositor::AddObserver(CompositorObserver* observer) { 305 void Compositor::AddObserver(CompositorObserver* observer) {
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 485
460 COMPOSITOR_EXPORT void DisableTestCompositor() { 486 COMPOSITOR_EXPORT void DisableTestCompositor() {
461 test_compositor_enabled = false; 487 test_compositor_enabled = false;
462 } 488 }
463 489
464 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() { 490 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() {
465 return test_compositor_enabled; 491 return test_compositor_enabled;
466 } 492 }
467 493
468 } // namespace ui 494 } // namespace ui
OLDNEW
« no previous file with comments | « ui/compositor/compositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698