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 | 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" |
11 #include "third_party/skia/include/core/SkBitmap.h" | 11 #include "third_party/skia/include/core/SkBitmap.h" |
12 #include "third_party/skia/include/images/SkImageEncoder.h" | 12 #include "third_party/skia/include/images/SkImageEncoder.h" |
13 #include "third_party/WebKit/Source/Platform/chromium/public/WebFloatPoint.h" | 13 #include "third_party/WebKit/Source/Platform/chromium/public/WebFloatPoint.h" |
14 #include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h" | 14 #include "third_party/WebKit/Source/Platform/chromium/public/WebRect.h" |
15 #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h" | 15 #include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h" |
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebCompositor.h" | 16 #include "third_party/WebKit/Source/Platform/chromium/public/WebCompositor.h" |
| 17 #include "third_party/WebKit/Source/Platform/chromium/public/WebCompositorOutput
Surface.h" |
17 #include "ui/compositor/compositor_observer.h" | 18 #include "ui/compositor/compositor_observer.h" |
18 #include "ui/compositor/compositor_switches.h" | 19 #include "ui/compositor/compositor_switches.h" |
19 #include "ui/compositor/dip_util.h" | 20 #include "ui/compositor/dip_util.h" |
20 #include "ui/compositor/layer.h" | 21 #include "ui/compositor/layer.h" |
21 #include "ui/compositor/test_web_graphics_context_3d.h" | 22 #include "ui/compositor/test_web_graphics_context_3d.h" |
22 #include "ui/gl/gl_context.h" | 23 #include "ui/gl/gl_context.h" |
23 #include "ui/gl/gl_implementation.h" | 24 #include "ui/gl/gl_implementation.h" |
24 #include "ui/gl/gl_surface.h" | 25 #include "ui/gl/gl_surface.h" |
25 #include "webkit/glue/webthread_impl.h" | 26 #include "webkit/glue/webthread_impl.h" |
26 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h" | 27 #include "webkit/gpu/webgraphicscontext3d_in_process_impl.h" |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 disable_schedule_composite_ = true; | 322 disable_schedule_composite_ = true; |
322 if (root_layer_) | 323 if (root_layer_) |
323 root_layer_->SendDamagedRects(); | 324 root_layer_->SendDamagedRects(); |
324 disable_schedule_composite_ = false; | 325 disable_schedule_composite_ = false; |
325 } | 326 } |
326 | 327 |
327 void Compositor::applyScrollAndScale(const WebKit::WebSize& scrollDelta, | 328 void Compositor::applyScrollAndScale(const WebKit::WebSize& scrollDelta, |
328 float scaleFactor) { | 329 float scaleFactor) { |
329 } | 330 } |
330 | 331 |
331 WebKit::WebGraphicsContext3D* Compositor::createContext3D() { | 332 // Adapts a pure WebGraphicsContext3D into a WebCompositorOutputSurface. |
| 333 class WebGraphicsContextToOutputSurfaceAdapter : |
| 334 public WebKit::WebCompositorOutputSurface { |
| 335 public: |
| 336 explicit WebGraphicsContextToOutputSurfaceAdapter( |
| 337 WebKit::WebGraphicsContext3D* context) |
| 338 : m_context3D(context) |
| 339 , m_client(0) |
| 340 { |
| 341 } |
| 342 |
| 343 virtual bool bindToClient( |
| 344 WebKit::WebCompositorOutputSurfaceClient* client) OVERRIDE |
| 345 { |
| 346 DCHECK(client); |
| 347 if (!m_context3D->makeContextCurrent()) |
| 348 return false; |
| 349 m_client = client; |
| 350 return true; |
| 351 } |
| 352 |
| 353 virtual const Capabilities& capabilities() const OVERRIDE |
| 354 { |
| 355 return m_capabilities; |
| 356 } |
| 357 |
| 358 virtual WebKit::WebGraphicsContext3D* context3D() const OVERRIDE |
| 359 { |
| 360 return m_context3D.get(); |
| 361 } |
| 362 |
| 363 virtual void sendFrameToParentCompositor( |
| 364 const WebKit::WebCompositorFrame&) OVERRIDE |
| 365 { |
| 366 } |
| 367 |
| 368 private: |
| 369 scoped_ptr<WebKit::WebGraphicsContext3D> m_context3D; |
| 370 Capabilities m_capabilities; |
| 371 WebKit::WebCompositorOutputSurfaceClient* m_client; |
| 372 }; |
| 373 |
| 374 WebKit::WebCompositorOutputSurface* Compositor::createOutputSurface() { |
332 if (test_compositor_enabled) { | 375 if (test_compositor_enabled) { |
333 ui::TestWebGraphicsContext3D* test_context = | 376 ui::TestWebGraphicsContext3D* test_context = |
334 new ui::TestWebGraphicsContext3D(); | 377 new ui::TestWebGraphicsContext3D(); |
335 test_context->Initialize(); | 378 test_context->Initialize(); |
336 return test_context; | 379 return new WebGraphicsContextToOutputSurfaceAdapter(test_context); |
337 } else { | 380 } else { |
338 return ContextFactory::GetInstance()->CreateContext(this); | 381 return new WebGraphicsContextToOutputSurfaceAdapter( |
| 382 ContextFactory::GetInstance()->CreateContext(this)); |
339 } | 383 } |
340 } | 384 } |
341 | 385 |
342 void Compositor::didRebindGraphicsContext(bool success) { | 386 void Compositor::didRecreateOutputSurface(bool success) { |
343 } | 387 } |
344 | 388 |
345 // Called once per draw in single-threaded compositor mode and potentially | 389 // Called once per draw in single-threaded compositor mode and potentially |
346 // many times between draws in the multi-threaded compositor mode. | 390 // many times between draws in the multi-threaded compositor mode. |
347 void Compositor::didCommit() { | 391 void Compositor::didCommit() { |
348 FOR_EACH_OBSERVER(CompositorObserver, | 392 FOR_EACH_OBSERVER(CompositorObserver, |
349 observer_list_, | 393 observer_list_, |
350 OnCompositingDidCommit(this)); | 394 OnCompositingDidCommit(this)); |
351 } | 395 } |
352 | 396 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 | 460 |
417 COMPOSITOR_EXPORT void DisableTestCompositor() { | 461 COMPOSITOR_EXPORT void DisableTestCompositor() { |
418 test_compositor_enabled = false; | 462 test_compositor_enabled = false; |
419 } | 463 } |
420 | 464 |
421 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() { | 465 COMPOSITOR_EXPORT bool IsTestCompositorEnabled() { |
422 return test_compositor_enabled; | 466 return test_compositor_enabled; |
423 } | 467 } |
424 | 468 |
425 } // namespace ui | 469 } // namespace ui |
OLD | NEW |