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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 100443006: Remove some LatencyInfo merging code path (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: fix android/mac build Created 6 years, 11 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
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 "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/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 #endif 1353 #endif
1354 1354
1355 void RenderWidgetHostViewAura::AcceleratedSurfaceBuffersSwapped( 1355 void RenderWidgetHostViewAura::AcceleratedSurfaceBuffersSwapped(
1356 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params_in_pixel, 1356 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params_in_pixel,
1357 int gpu_host_id) { 1357 int gpu_host_id) {
1358 BufferPresentedCallback ack_callback = base::Bind( 1358 BufferPresentedCallback ack_callback = base::Bind(
1359 &AcknowledgeBufferForGpu, 1359 &AcknowledgeBufferForGpu,
1360 params_in_pixel.route_id, 1360 params_in_pixel.route_id,
1361 gpu_host_id, 1361 gpu_host_id,
1362 params_in_pixel.mailbox_name); 1362 params_in_pixel.mailbox_name);
1363 // TODO(miletus) : Pass the params_in_pixel.latency_info directly into
1364 // BuffersSwapped() once GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params
1365 // is converted to contain std::vector<ui::LatencyInfo>.
1366 std::vector<ui::LatencyInfo> latency_info;
1367 latency_info.push_back(params_in_pixel.latency_info);
1363 BuffersSwapped(params_in_pixel.size, 1368 BuffersSwapped(params_in_pixel.size,
1364 gfx::Rect(params_in_pixel.size), 1369 gfx::Rect(params_in_pixel.size),
1365 params_in_pixel.scale_factor, 1370 params_in_pixel.scale_factor,
1366 params_in_pixel.mailbox_name, 1371 params_in_pixel.mailbox_name,
1367 params_in_pixel.latency_info, 1372 latency_info,
1368 ack_callback); 1373 ack_callback);
1369 } 1374 }
1370 1375
1371 void RenderWidgetHostViewAura::SwapDelegatedFrame( 1376 void RenderWidgetHostViewAura::SwapDelegatedFrame(
1372 uint32 output_surface_id, 1377 uint32 output_surface_id,
1373 scoped_ptr<cc::DelegatedFrameData> frame_data, 1378 scoped_ptr<cc::DelegatedFrameData> frame_data,
1374 float frame_device_scale_factor, 1379 float frame_device_scale_factor,
1375 const ui::LatencyInfo& latency_info) { 1380 const std::vector<ui::LatencyInfo>& latency_info) {
1376 DCHECK_NE(0u, frame_data->render_pass_list.size()); 1381 DCHECK_NE(0u, frame_data->render_pass_list.size());
1377 1382
1378 cc::RenderPass* root_pass = frame_data->render_pass_list.back(); 1383 cc::RenderPass* root_pass = frame_data->render_pass_list.back();
1379 1384
1380 gfx::Size frame_size = root_pass->output_rect.size(); 1385 gfx::Size frame_size = root_pass->output_rect.size();
1381 gfx::Size frame_size_in_dip = 1386 gfx::Size frame_size_in_dip =
1382 ConvertSizeToDIP(frame_device_scale_factor, frame_size); 1387 ConvertSizeToDIP(frame_device_scale_factor, frame_size);
1383 1388
1384 gfx::Rect damage_rect = gfx::ToEnclosingRect(root_pass->damage_rect); 1389 gfx::Rect damage_rect = gfx::ToEnclosingRect(root_pass->damage_rect);
1385 damage_rect.Intersect(gfx::Rect(frame_size)); 1390 damage_rect.Intersect(gfx::Rect(frame_size));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 if (paint_observer_) 1466 if (paint_observer_)
1462 paint_observer_->OnUpdateCompositorContent(); 1467 paint_observer_->OnUpdateCompositorContent();
1463 window_->SchedulePaintInRect(damage_rect_in_dip); 1468 window_->SchedulePaintInRect(damage_rect_in_dip);
1464 1469
1465 pending_delegated_ack_count_++; 1470 pending_delegated_ack_count_++;
1466 1471
1467 ui::Compositor* compositor = GetCompositor(); 1472 ui::Compositor* compositor = GetCompositor();
1468 if (!compositor) { 1473 if (!compositor) {
1469 SendDelegatedFrameAck(output_surface_id); 1474 SendDelegatedFrameAck(output_surface_id);
1470 } else { 1475 } else {
1471 compositor->SetLatencyInfo(latency_info); 1476 for (size_t i = 0; i < latency_info.size(); i++)
1477 compositor->SetLatencyInfo(latency_info[i]);
1472 AddOnCommitCallbackAndDisableLocks( 1478 AddOnCommitCallbackAndDisableLocks(
1473 base::Bind(&RenderWidgetHostViewAura::SendDelegatedFrameAck, 1479 base::Bind(&RenderWidgetHostViewAura::SendDelegatedFrameAck,
1474 AsWeakPtr(), 1480 AsWeakPtr(),
1475 output_surface_id)); 1481 output_surface_id));
1476 } 1482 }
1477 DidReceiveFrameFromRenderer(); 1483 DidReceiveFrameFromRenderer();
1478 if (frame_provider_.get()) 1484 if (frame_provider_.get())
1479 delegated_frame_evictor_->SwappedFrame(!host_->is_hidden()); 1485 delegated_frame_evictor_->SwappedFrame(!host_->is_hidden());
1480 // Note: the frame may have been evicted immediately. 1486 // Note: the frame may have been evicted immediately.
1481 } 1487 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1515 void RenderWidgetHostViewAura::EvictDelegatedFrame() { 1521 void RenderWidgetHostViewAura::EvictDelegatedFrame() {
1516 window_->layer()->SetShowPaintedContent(); 1522 window_->layer()->SetShowPaintedContent();
1517 frame_provider_ = NULL; 1523 frame_provider_ = NULL;
1518 delegated_frame_evictor_->DiscardedFrame(); 1524 delegated_frame_evictor_->DiscardedFrame();
1519 } 1525 }
1520 1526
1521 void RenderWidgetHostViewAura::SwapSoftwareFrame( 1527 void RenderWidgetHostViewAura::SwapSoftwareFrame(
1522 uint32 output_surface_id, 1528 uint32 output_surface_id,
1523 scoped_ptr<cc::SoftwareFrameData> frame_data, 1529 scoped_ptr<cc::SoftwareFrameData> frame_data,
1524 float frame_device_scale_factor, 1530 float frame_device_scale_factor,
1525 const ui::LatencyInfo& latency_info) { 1531 const std::vector<ui::LatencyInfo>& latency_info) {
1526 const gfx::Size& frame_size = frame_data->size; 1532 const gfx::Size& frame_size = frame_data->size;
1527 const gfx::Rect& damage_rect = frame_data->damage_rect; 1533 const gfx::Rect& damage_rect = frame_data->damage_rect;
1528 gfx::Size frame_size_in_dip = 1534 gfx::Size frame_size_in_dip =
1529 ConvertSizeToDIP(frame_device_scale_factor, frame_size); 1535 ConvertSizeToDIP(frame_device_scale_factor, frame_size);
1530 if (ShouldSkipFrame(frame_size_in_dip)) { 1536 if (ShouldSkipFrame(frame_size_in_dip)) {
1531 ReleaseSoftwareFrame(output_surface_id, frame_data->id); 1537 ReleaseSoftwareFrame(output_surface_id, frame_data->id);
1532 SendSoftwareFrameAck(output_surface_id); 1538 SendSoftwareFrameAck(output_surface_id);
1533 return; 1539 return;
1534 } 1540 }
1535 1541
(...skipping 23 matching lines...) Expand all
1559 released_front_lock_ = NULL; 1565 released_front_lock_ = NULL;
1560 CheckResizeLock(); 1566 CheckResizeLock();
1561 window_->layer()->SetTextureMailbox(mailbox, 1567 window_->layer()->SetTextureMailbox(mailbox,
1562 callback.Pass(), 1568 callback.Pass(),
1563 frame_device_scale_factor); 1569 frame_device_scale_factor);
1564 window_->SchedulePaintInRect( 1570 window_->SchedulePaintInRect(
1565 ConvertRectToDIP(frame_device_scale_factor, damage_rect)); 1571 ConvertRectToDIP(frame_device_scale_factor, damage_rect));
1566 1572
1567 ui::Compositor* compositor = GetCompositor(); 1573 ui::Compositor* compositor = GetCompositor();
1568 if (compositor) { 1574 if (compositor) {
1569 compositor->SetLatencyInfo(latency_info); 1575 for (size_t i = 0; i < latency_info.size(); i++)
1576 compositor->SetLatencyInfo(latency_info[i]);
1570 AddOnCommitCallbackAndDisableLocks( 1577 AddOnCommitCallbackAndDisableLocks(
1571 base::Bind(&RenderWidgetHostViewAura::SendSoftwareFrameAck, 1578 base::Bind(&RenderWidgetHostViewAura::SendSoftwareFrameAck,
1572 AsWeakPtr(), 1579 AsWeakPtr(),
1573 output_surface_id)); 1580 output_surface_id));
1574 } 1581 }
1575 if (paint_observer_) 1582 if (paint_observer_)
1576 paint_observer_->OnUpdateCompositorContent(); 1583 paint_observer_->OnUpdateCompositorContent();
1577 DidReceiveFrameFromRenderer(); 1584 DidReceiveFrameFromRenderer();
1578 1585
1579 software_frame_manager_->SwapToNewFrameComplete(!host_->is_hidden()); 1586 software_frame_manager_->SwapToNewFrameComplete(!host_->is_hidden());
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 const { 1685 const {
1679 return reinterpret_cast<gfx::NativeViewId>(plugin_parent_window_); 1686 return reinterpret_cast<gfx::NativeViewId>(plugin_parent_window_);
1680 } 1687 }
1681 #endif 1688 #endif
1682 1689
1683 void RenderWidgetHostViewAura::BuffersSwapped( 1690 void RenderWidgetHostViewAura::BuffersSwapped(
1684 const gfx::Size& surface_size, 1691 const gfx::Size& surface_size,
1685 const gfx::Rect& damage_rect, 1692 const gfx::Rect& damage_rect,
1686 float surface_scale_factor, 1693 float surface_scale_factor,
1687 const std::string& mailbox_name, 1694 const std::string& mailbox_name,
1688 const ui::LatencyInfo& latency_info, 1695 const std::vector<ui::LatencyInfo>& latency_info,
1689 const BufferPresentedCallback& ack_callback) { 1696 const BufferPresentedCallback& ack_callback) {
1690 scoped_refptr<ui::Texture> previous_texture(current_surface_); 1697 scoped_refptr<ui::Texture> previous_texture(current_surface_);
1691 const gfx::Rect surface_rect = gfx::Rect(surface_size); 1698 const gfx::Rect surface_rect = gfx::Rect(surface_size);
1692 software_frame_manager_->DiscardCurrentFrame(); 1699 software_frame_manager_->DiscardCurrentFrame();
1693 1700
1694 if (!SwapBuffersPrepare(surface_rect, 1701 if (!SwapBuffersPrepare(surface_rect,
1695 surface_scale_factor, 1702 surface_scale_factor,
1696 damage_rect, 1703 damage_rect,
1697 mailbox_name, 1704 mailbox_name,
1698 ack_callback)) { 1705 ack_callback)) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 damage_rect.height())); 1745 damage_rect.height()));
1739 1746
1740 // Damage may not have been DIP aligned, so inflate damage to compensate 1747 // Damage may not have been DIP aligned, so inflate damage to compensate
1741 // for any round-off error. 1748 // for any round-off error.
1742 rect_to_paint.Inset(-1, -1); 1749 rect_to_paint.Inset(-1, -1);
1743 rect_to_paint.Intersect(window_->bounds()); 1750 rect_to_paint.Intersect(window_->bounds());
1744 1751
1745 if (paint_observer_) 1752 if (paint_observer_)
1746 paint_observer_->OnUpdateCompositorContent(); 1753 paint_observer_->OnUpdateCompositorContent();
1747 window_->SchedulePaintInRect(rect_to_paint); 1754 window_->SchedulePaintInRect(rect_to_paint);
1748 compositor->SetLatencyInfo(latency_info); 1755 for (size_t i = 0; i < latency_info.size(); i++)
1756 compositor->SetLatencyInfo(latency_info[i]);
1749 } 1757 }
1750 1758
1751 SwapBuffersCompleted(ack_callback, previous_texture); 1759 SwapBuffersCompleted(ack_callback, previous_texture);
1752 } 1760 }
1753 1761
1754 void RenderWidgetHostViewAura::AcceleratedSurfacePostSubBuffer( 1762 void RenderWidgetHostViewAura::AcceleratedSurfacePostSubBuffer(
1755 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params_in_pixel, 1763 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params_in_pixel,
1756 int gpu_host_id) { 1764 int gpu_host_id) {
1757 gfx::Rect damage_rect(params_in_pixel.x, 1765 gfx::Rect damage_rect(params_in_pixel.x,
1758 params_in_pixel.y, 1766 params_in_pixel.y,
1759 params_in_pixel.width, 1767 params_in_pixel.width,
1760 params_in_pixel.height); 1768 params_in_pixel.height);
1761 BufferPresentedCallback ack_callback = 1769 BufferPresentedCallback ack_callback =
1762 base::Bind(&AcknowledgeBufferForGpu, 1770 base::Bind(&AcknowledgeBufferForGpu,
1763 params_in_pixel.route_id, 1771 params_in_pixel.route_id,
1764 gpu_host_id, 1772 gpu_host_id,
1765 params_in_pixel.mailbox_name); 1773 params_in_pixel.mailbox_name);
1774 // TODO(miletus) : Pass the params_in_pixel.latency_info directly into
1775 // BuffersSwapped() once GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params
1776 // is converted to contain std::vector<ui::LatencyInfo>.
1777 std::vector<ui::LatencyInfo> latency_info;
1778 latency_info.push_back(params_in_pixel.latency_info);
1766 BuffersSwapped(params_in_pixel.surface_size, 1779 BuffersSwapped(params_in_pixel.surface_size,
1767 damage_rect, 1780 damage_rect,
1768 params_in_pixel.surface_scale_factor, 1781 params_in_pixel.surface_scale_factor,
1769 params_in_pixel.mailbox_name, 1782 params_in_pixel.mailbox_name,
1770 params_in_pixel.latency_info, 1783 latency_info,
1771 ack_callback); 1784 ack_callback);
1772 } 1785 }
1773 1786
1774 void RenderWidgetHostViewAura::AcceleratedSurfaceSuspend() { 1787 void RenderWidgetHostViewAura::AcceleratedSurfaceSuspend() {
1775 } 1788 }
1776 1789
1777 void RenderWidgetHostViewAura::AcceleratedSurfaceRelease() { 1790 void RenderWidgetHostViewAura::AcceleratedSurfaceRelease() {
1778 // This really tells us to release the frontbuffer. 1791 // This really tells us to release the frontbuffer.
1779 if (current_surface_.get()) { 1792 if (current_surface_.get()) {
1780 ui::Compositor* compositor = GetCompositor(); 1793 ui::Compositor* compositor = GetCompositor();
(...skipping 1710 matching lines...) Expand 10 before | Expand all | Expand 10 after
3491 RenderWidgetHost* widget) { 3504 RenderWidgetHost* widget) {
3492 return new RenderWidgetHostViewAura(widget); 3505 return new RenderWidgetHostViewAura(widget);
3493 } 3506 }
3494 3507
3495 // static 3508 // static
3496 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { 3509 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) {
3497 GetScreenInfoForWindow(results, NULL); 3510 GetScreenInfoForWindow(results, NULL);
3498 } 3511 }
3499 3512
3500 } // namespace content 3513 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698