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 "content/browser/renderer_host/render_widget_host_view_aura.h" | 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 | 439 |
440 GetInputMethod()->OnCaretBoundsChanged(this); | 440 GetInputMethod()->OnCaretBoundsChanged(this); |
441 } | 441 } |
442 | 442 |
443 BackingStore* RenderWidgetHostViewAura::AllocBackingStore( | 443 BackingStore* RenderWidgetHostViewAura::AllocBackingStore( |
444 const gfx::Size& size) { | 444 const gfx::Size& size) { |
445 return new BackingStoreAura(host_, size); | 445 return new BackingStoreAura(host_, size); |
446 } | 446 } |
447 | 447 |
448 void RenderWidgetHostViewAura::CopyFromCompositingSurface( | 448 void RenderWidgetHostViewAura::CopyFromCompositingSurface( |
449 const gfx::Size& size, | 449 const gfx::Rect& src_subrect, |
| 450 const gfx::Size& dst_size, |
450 const base::Callback<void(bool)>& callback, | 451 const base::Callback<void(bool)>& callback, |
451 skia::PlatformCanvas* output) { | 452 skia::PlatformCanvas* output) { |
452 base::ScopedClosureRunner scoped_callback_runner(base::Bind(callback, false)); | 453 base::ScopedClosureRunner scoped_callback_runner(base::Bind(callback, false)); |
453 ui::Compositor* compositor = GetCompositor(); | 454 ui::Compositor* compositor = GetCompositor(); |
454 if (!compositor) | 455 if (!compositor) |
455 return; | 456 return; |
456 | 457 |
457 std::map<uint64, scoped_refptr<ui::Texture> >::iterator it = | 458 std::map<uint64, scoped_refptr<ui::Texture> >::iterator it = |
458 image_transport_clients_.find(current_surface_); | 459 image_transport_clients_.find(current_surface_); |
459 if (it == image_transport_clients_.end()) | 460 if (it == image_transport_clients_.end()) |
460 return; | 461 return; |
461 | 462 |
462 ui::Texture* container = it->second; | 463 ui::Texture* container = it->second; |
463 DCHECK(container); | 464 DCHECK(container); |
464 | 465 |
465 gfx::Size size_in_pixel = ConvertSizeToPixel(this, size); | 466 gfx::Size dst_size_in_pixel = ConvertSizeToPixel(this, dst_size); |
466 if (!output->initialize( | 467 if (!output->initialize( |
467 size_in_pixel.width(), size_in_pixel.height(), true)) | 468 dst_size_in_pixel.width(), dst_size_in_pixel.height(), true)) |
468 return; | 469 return; |
469 | 470 |
470 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 471 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
471 GLHelper* gl_helper = factory->GetGLHelper(compositor); | 472 GLHelper* gl_helper = factory->GetGLHelper(compositor); |
472 if (!gl_helper) | 473 if (!gl_helper) |
473 return; | 474 return; |
474 | 475 |
475 unsigned char* addr = static_cast<unsigned char*>( | 476 unsigned char* addr = static_cast<unsigned char*>( |
476 output->getTopDevice()->accessBitmap(true).getPixels()); | 477 output->getTopDevice()->accessBitmap(true).getPixels()); |
477 scoped_callback_runner.Release(); | 478 scoped_callback_runner.Release(); |
| 479 gfx::Rect src_subrect_in_pixel = ConvertRectToPixel(this, src_subrect); |
478 gl_helper->CopyTextureTo(container->texture_id(), | 480 gl_helper->CopyTextureTo(container->texture_id(), |
479 container->size(), | 481 container->size(), |
480 size_in_pixel, | 482 src_subrect_in_pixel, |
| 483 dst_size_in_pixel, |
481 addr, | 484 addr, |
482 callback); | 485 callback); |
483 } | 486 } |
484 | 487 |
485 void RenderWidgetHostViewAura::OnAcceleratedCompositingStateChange() { | 488 void RenderWidgetHostViewAura::OnAcceleratedCompositingStateChange() { |
486 // Delay processing the state change until we either get a software frame if | 489 // Delay processing the state change until we either get a software frame if |
487 // switching to software mode or receive a buffers swapped notification | 490 // switching to software mode or receive a buffers swapped notification |
488 // if switching to accelerated mode. | 491 // if switching to accelerated mode. |
489 // Sometimes (e.g. on a page load) the renderer will spuriously disable then | 492 // Sometimes (e.g. on a page load) the renderer will spuriously disable then |
490 // re-enable accelerated compositing, causing us to flash. | 493 // re-enable accelerated compositing, causing us to flash. |
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1494 RenderWidgetHost* widget) { | 1497 RenderWidgetHost* widget) { |
1495 return new RenderWidgetHostViewAura(widget); | 1498 return new RenderWidgetHostViewAura(widget); |
1496 } | 1499 } |
1497 | 1500 |
1498 // static | 1501 // static |
1499 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { | 1502 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { |
1500 GetScreenInfoForWindow(results, NULL); | 1503 GetScreenInfoForWindow(results, NULL); |
1501 } | 1504 } |
1502 | 1505 |
1503 } // namespace content | 1506 } // namespace content |
OLD | NEW |