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

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

Issue 274163004: Remove browser-side tracking of accelerated compositing (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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 "content/browser/renderer_host/render_widget_host_impl.h" 5 #include "content/browser/renderer_host/render_widget_host_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 : view_(NULL), 164 : view_(NULL),
165 renderer_initialized_(false), 165 renderer_initialized_(false),
166 hung_renderer_delay_ms_(kHungRendererDelayMs), 166 hung_renderer_delay_ms_(kHungRendererDelayMs),
167 delegate_(delegate), 167 delegate_(delegate),
168 process_(process), 168 process_(process),
169 routing_id_(routing_id), 169 routing_id_(routing_id),
170 surface_id_(0), 170 surface_id_(0),
171 is_loading_(false), 171 is_loading_(false),
172 is_hidden_(hidden), 172 is_hidden_(hidden),
173 is_fullscreen_(false), 173 is_fullscreen_(false),
174 is_accelerated_compositing_active_(false),
175 repaint_ack_pending_(false), 174 repaint_ack_pending_(false),
176 resize_ack_pending_(false), 175 resize_ack_pending_(false),
177 screen_info_out_of_date_(false), 176 screen_info_out_of_date_(false),
178 overdraw_bottom_height_(0.f), 177 overdraw_bottom_height_(0.f),
179 should_auto_resize_(false), 178 should_auto_resize_(false),
180 waiting_for_screen_rects_ack_(false), 179 waiting_for_screen_rects_ack_(false),
181 accessibility_mode_(AccessibilityModeOff), 180 accessibility_mode_(AccessibilityModeOff),
182 needs_repainting_on_restore_(false), 181 needs_repainting_on_restore_(false),
183 is_unresponsive_(false), 182 is_unresponsive_(false),
184 in_flight_event_count_(0), 183 in_flight_event_count_(0),
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect) 467 IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateRect, OnUpdateRect)
469 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnFocus) 468 IPC_MESSAGE_HANDLER(ViewHostMsg_Focus, OnFocus)
470 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnBlur) 469 IPC_MESSAGE_HANDLER(ViewHostMsg_Blur, OnBlur)
471 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor) 470 IPC_MESSAGE_HANDLER(ViewHostMsg_SetCursor, OnSetCursor)
472 IPC_MESSAGE_HANDLER(ViewHostMsg_SetTouchEventEmulationEnabled, 471 IPC_MESSAGE_HANDLER(ViewHostMsg_SetTouchEventEmulationEnabled,
473 OnSetTouchEventEmulationEnabled) 472 OnSetTouchEventEmulationEnabled)
474 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputTypeChanged, 473 IPC_MESSAGE_HANDLER(ViewHostMsg_TextInputTypeChanged,
475 OnTextInputTypeChanged) 474 OnTextInputTypeChanged)
476 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition, 475 IPC_MESSAGE_HANDLER(ViewHostMsg_ImeCancelComposition,
477 OnImeCancelComposition) 476 OnImeCancelComposition)
478 IPC_MESSAGE_HANDLER(ViewHostMsg_DidActivateAcceleratedCompositing,
479 OnDidActivateAcceleratedCompositing)
480 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse) 477 IPC_MESSAGE_HANDLER(ViewHostMsg_LockMouse, OnLockMouse)
481 IPC_MESSAGE_HANDLER(ViewHostMsg_UnlockMouse, OnUnlockMouse) 478 IPC_MESSAGE_HANDLER(ViewHostMsg_UnlockMouse, OnUnlockMouse)
482 IPC_MESSAGE_HANDLER(ViewHostMsg_ShowDisambiguationPopup, 479 IPC_MESSAGE_HANDLER(ViewHostMsg_ShowDisambiguationPopup,
483 OnShowDisambiguationPopup) 480 OnShowDisambiguationPopup)
484 IPC_MESSAGE_HANDLER(ViewHostMsg_SelectionChanged, OnSelectionChanged) 481 IPC_MESSAGE_HANDLER(ViewHostMsg_SelectionChanged, OnSelectionChanged)
485 IPC_MESSAGE_HANDLER(ViewHostMsg_SelectionBoundsChanged, 482 IPC_MESSAGE_HANDLER(ViewHostMsg_SelectionBoundsChanged,
486 OnSelectionBoundsChanged) 483 OnSelectionBoundsChanged)
487 #if defined(OS_WIN) 484 #if defined(OS_WIN)
488 IPC_MESSAGE_HANDLER(ViewHostMsg_WindowlessPluginDummyWindowCreated, 485 IPC_MESSAGE_HANDLER(ViewHostMsg_WindowlessPluginDummyWindowCreated,
489 OnWindowlessPluginDummyWindowCreated) 486 OnWindowlessPluginDummyWindowCreated)
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 if (!view_) 693 if (!view_)
697 return; 694 return;
698 view_->SetIsLoading(is_loading); 695 view_->SetIsLoading(is_loading);
699 } 696 }
700 697
701 void RenderWidgetHostImpl::CopyFromBackingStore( 698 void RenderWidgetHostImpl::CopyFromBackingStore(
702 const gfx::Rect& src_subrect, 699 const gfx::Rect& src_subrect,
703 const gfx::Size& accelerated_dst_size, 700 const gfx::Size& accelerated_dst_size,
704 const base::Callback<void(bool, const SkBitmap&)>& callback, 701 const base::Callback<void(bool, const SkBitmap&)>& callback,
705 const SkBitmap::Config& bitmap_config) { 702 const SkBitmap::Config& bitmap_config) {
706 if (view_ && is_accelerated_compositing_active_) { 703 if (view_) {
707 TRACE_EVENT0("browser", 704 TRACE_EVENT0("browser",
708 "RenderWidgetHostImpl::CopyFromBackingStore::FromCompositingSurface"); 705 "RenderWidgetHostImpl::CopyFromBackingStore::FromCompositingSurface");
709 gfx::Rect accelerated_copy_rect = src_subrect.IsEmpty() ? 706 gfx::Rect accelerated_copy_rect = src_subrect.IsEmpty() ?
710 gfx::Rect(view_->GetViewBounds().size()) : src_subrect; 707 gfx::Rect(view_->GetViewBounds().size()) : src_subrect;
711 view_->CopyFromCompositingSurface( 708 view_->CopyFromCompositingSurface(
712 accelerated_copy_rect, accelerated_dst_size, callback, bitmap_config); 709 accelerated_copy_rect, accelerated_dst_size, callback, bitmap_config);
713 return; 710 return;
714 } 711 }
715 712
716 callback.Run(false, SkBitmap()); 713 callback.Run(false, SkBitmap());
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 832
836 // Loop if we still have time left and haven't gotten a properly sized 833 // Loop if we still have time left and haven't gotten a properly sized
837 // BackingStore yet. This is necessary to support the GPU path which 834 // BackingStore yet. This is necessary to support the GPU path which
838 // typically has multiple frames pipelined -- we may need to skip one or two 835 // typically has multiple frames pipelined -- we may need to skip one or two
839 // BackingStore messages to get to the latest. 836 // BackingStore messages to get to the latest.
840 max_delay = end_time - TimeTicks::Now(); 837 max_delay = end_time - TimeTicks::Now();
841 } while (max_delay > TimeDelta::FromSeconds(0)); 838 } while (max_delay > TimeDelta::FromSeconds(0));
842 } 839 }
843 840
844 bool RenderWidgetHostImpl::ScheduleComposite() { 841 bool RenderWidgetHostImpl::ScheduleComposite() {
845 if (is_hidden_ || !is_accelerated_compositing_active_ || 842 if (is_hidden_ || current_size_.IsEmpty() || repaint_ack_pending_ ||
846 current_size_.IsEmpty() || repaint_ack_pending_ ||
847 resize_ack_pending_ || view_being_painted_) { 843 resize_ack_pending_ || view_being_painted_) {
848 return false; 844 return false;
849 } 845 }
850 846
851 // Send out a request to the renderer to paint the view if required. 847 // Send out a request to the renderer to paint the view if required.
852 repaint_start_time_ = TimeTicks::Now(); 848 repaint_start_time_ = TimeTicks::Now();
853 repaint_ack_pending_ = true; 849 repaint_ack_pending_ = true;
854 TRACE_EVENT_ASYNC_BEGIN0( 850 TRACE_EVENT_ASYNC_BEGIN0(
855 "renderer_host", "RenderWidgetHostImpl::repaint_ack_pending_", this); 851 "renderer_host", "RenderWidgetHostImpl::repaint_ack_pending_", this);
856 Send(new ViewMsg_Repaint(routing_id_, current_size_)); 852 Send(new ViewMsg_Repaint(routing_id_, current_size_));
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
1222 if (overscroll_controller_) 1218 if (overscroll_controller_)
1223 overscroll_controller_->Reset(); 1219 overscroll_controller_->Reset();
1224 1220
1225 // Must reset these to ensure that keyboard events work with a new renderer. 1221 // Must reset these to ensure that keyboard events work with a new renderer.
1226 suppress_next_char_events_ = false; 1222 suppress_next_char_events_ = false;
1227 1223
1228 // Reset some fields in preparation for recovering from a crash. 1224 // Reset some fields in preparation for recovering from a crash.
1229 ResetSizeAndRepaintPendingFlags(); 1225 ResetSizeAndRepaintPendingFlags();
1230 current_size_.SetSize(0, 0); 1226 current_size_.SetSize(0, 0);
1231 is_hidden_ = false; 1227 is_hidden_ = false;
1232 is_accelerated_compositing_active_ = false;
1233 1228
1234 // Reset this to ensure the hung renderer mechanism is working properly. 1229 // Reset this to ensure the hung renderer mechanism is working properly.
1235 in_flight_event_count_ = 0; 1230 in_flight_event_count_ = 0;
1236 1231
1237 if (view_) { 1232 if (view_) {
1238 GpuSurfaceTracker::Get()->SetSurfaceHandle(surface_id_, 1233 GpuSurfaceTracker::Get()->SetSurfaceHandle(surface_id_,
1239 gfx::GLSurfaceHandle()); 1234 gfx::GLSurfaceHandle());
1240 view_->RenderProcessGone(status, exit_code); 1235 view_->RenderProcessGone(status, exit_code);
1241 view_ = NULL; // The View should be deleted by RenderProcessGone. 1236 view_ = NULL; // The View should be deleted by RenderProcessGone.
1242 } 1237 }
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
1666 if (view_) 1661 if (view_)
1667 view_->ImeCompositionRangeChanged(range, character_bounds); 1662 view_->ImeCompositionRangeChanged(range, character_bounds);
1668 } 1663 }
1669 #endif 1664 #endif
1670 1665
1671 void RenderWidgetHostImpl::OnImeCancelComposition() { 1666 void RenderWidgetHostImpl::OnImeCancelComposition() {
1672 if (view_) 1667 if (view_)
1673 view_->ImeCancelComposition(); 1668 view_->ImeCancelComposition();
1674 } 1669 }
1675 1670
1676 void RenderWidgetHostImpl::OnDidActivateAcceleratedCompositing(bool activated) {
1677 TRACE_EVENT1("renderer_host",
1678 "RenderWidgetHostImpl::OnDidActivateAcceleratedCompositing",
1679 "activated", activated);
1680 is_accelerated_compositing_active_ = activated;
1681 if (view_)
1682 view_->OnAcceleratedCompositingStateChange();
1683 }
1684
1685 void RenderWidgetHostImpl::OnLockMouse(bool user_gesture, 1671 void RenderWidgetHostImpl::OnLockMouse(bool user_gesture,
1686 bool last_unlocked_by_target, 1672 bool last_unlocked_by_target,
1687 bool privileged) { 1673 bool privileged) {
1688 1674
1689 if (pending_mouse_lock_request_) { 1675 if (pending_mouse_lock_request_) {
1690 Send(new ViewMsg_LockMouse_ACK(routing_id_, false)); 1676 Send(new ViewMsg_LockMouse_ACK(routing_id_, false));
1691 return; 1677 return;
1692 } else if (IsMouseLocked()) { 1678 } else if (IsMouseLocked()) {
1693 Send(new ViewMsg_LockMouse_ACK(routing_id_, true)); 1679 Send(new ViewMsg_LockMouse_ACK(routing_id_, true));
1694 return; 1680 return;
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after
2336 } 2322 }
2337 } 2323 }
2338 2324
2339 SkBitmap::Config RenderWidgetHostImpl::PreferredReadbackFormat() { 2325 SkBitmap::Config RenderWidgetHostImpl::PreferredReadbackFormat() {
2340 if (view_) 2326 if (view_)
2341 return view_->PreferredReadbackFormat(); 2327 return view_->PreferredReadbackFormat();
2342 return SkBitmap::kARGB_8888_Config; 2328 return SkBitmap::kARGB_8888_Config;
2343 } 2329 }
2344 2330
2345 } // namespace content 2331 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698