| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index be9a48967f1112c9d7354848c63b7fe10b31c614..d6f1ad4de1380d7165dc77f982ef13356806558f 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -101,6 +101,8 @@ bool ShouldCoalesceMouseWheelEvents(const WebMouseWheelEvent& last_event,
|
| last_event.momentumPhase == new_event.momentumPhase;
|
| }
|
|
|
| +int64 g_current_input_number;
|
| +
|
| } // namespace
|
|
|
|
|
| @@ -155,7 +157,9 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
|
| tick_active_smooth_scroll_gestures_task_posted_(false),
|
| touch_event_queue_(new TouchEventQueue(this)),
|
| - gesture_event_filter_(new GestureEventFilter(this)) {
|
| + gesture_event_filter_(new GestureEventFilter(this)),
|
| + incremented_input_number_(false),
|
| + current_input_number_(0) {
|
| CHECK(delegate_);
|
| if (routing_id_ == MSG_ROUTING_NONE) {
|
| routing_id_ = process_->GetNextRoutingID();
|
| @@ -441,6 +445,9 @@ void RenderWidgetHostImpl::WasShown() {
|
| } else {
|
| needs_repainting = false;
|
| }
|
| +
|
| + SendStartFrame();
|
| +
|
| Send(new ViewMsg_WasShown(routing_id_, needs_repainting));
|
|
|
| process_->WidgetRestored();
|
| @@ -496,6 +503,7 @@ void RenderWidgetHostImpl::WasResized() {
|
| if (!new_size.IsEmpty() && size_changed)
|
| resize_ack_pending_ = true;
|
|
|
| + SendStartFrame();
|
| if (!Send(new ViewMsg_Resize(routing_id_, new_size,
|
| GetRootWindowResizerRect(), is_fullscreen_))) {
|
| resize_ack_pending_ = false;
|
| @@ -905,6 +913,8 @@ void RenderWidgetHostImpl::ForwardMouseEvent(const WebMouseEvent& mouse_event) {
|
| return;
|
| }
|
|
|
| + IncrementInputNumber();
|
| +
|
| if (mouse_event.type == WebInputEvent::MouseDown &&
|
| gesture_event_filter_->GetTapSuppressionController()->
|
| ShouldDeferMouseDown(mouse_event))
|
| @@ -926,6 +936,7 @@ void RenderWidgetHostImpl::ForwardWheelEvent(
|
| if (ignore_input_events_ || process_->IgnoreInputEvents())
|
| return;
|
|
|
| + IncrementInputNumber();
|
| // If there's already a mouse wheel event waiting to be sent to the renderer,
|
| // add the new deltas to that event. Not doing so (e.g., by dropping the old
|
| // event, as for mouse moves) results in very slow scrolling on the Mac (on
|
| @@ -1090,12 +1101,36 @@ void RenderWidgetHostImpl::ForwardKeyboardEvent(
|
| }
|
| }
|
|
|
| +void RenderWidgetHostImpl::IncrementInputNumber() {
|
| + if (incremented_input_number_)
|
| + return;
|
| + g_current_input_number++;
|
| + current_input_number_ = g_current_input_number;
|
| + incremented_input_number_ = true;
|
| + TRACE_EVENT_ASYNC_BEGIN1("frame", "Input processing", this,
|
| + "input_number", current_input_number_);
|
| +}
|
| +
|
| +void RenderWidgetHostImpl::SendStartFrame() {
|
| + IncrementInputNumber();
|
| + TRACE_EVENT_ASYNC_END1("frame", "Input processing", this,
|
| + "input_number", current_input_number_);
|
| + Send(new ViewMsg_StartFrame(routing_id_, current_input_number_));
|
| + incremented_input_number_ = false;
|
| +}
|
| +
|
| void RenderWidgetHostImpl::SendInputEvent(const WebInputEvent& input_event,
|
| int event_size,
|
| bool is_keyboard_shortcut) {
|
| + IncrementInputNumber();
|
| + incremented_input_number_ = false;
|
| +
|
| + TRACE_EVENT_ASYNC_END1("frame", "Input processing", this,
|
| + "input_number", current_input_number_);
|
| +
|
| input_event_start_time_ = TimeTicks::Now();
|
| Send(new ViewMsg_HandleInputEvent(
|
| - routing_id_, &input_event, is_keyboard_shortcut));
|
| + routing_id_, current_input_number_, &input_event, is_keyboard_shortcut));
|
| increment_in_flight_event_count();
|
| }
|
|
|
| @@ -1532,7 +1567,10 @@ void RenderWidgetHostImpl::OnSwapCompositorFrame(
|
|
|
| void RenderWidgetHostImpl::OnUpdateRect(
|
| const ViewHostMsg_UpdateRect_Params& params) {
|
| - TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::OnUpdateRect");
|
| + TRACE_EVENT2("renderer_host", "RenderWidgetHostImpl::OnUpdateRect",
|
| + "input_number", params.latency_info.inputNumber,
|
| + "render_thread_frame_number",
|
| + params.latency_info.rendererMainFrameNumber);
|
| TimeTicks paint_start = TimeTicks::Now();
|
|
|
| // Update our knowledge of the RenderWidget's size.
|
| @@ -1635,7 +1673,10 @@ void RenderWidgetHostImpl::OnUpdateIsDelayed() {
|
| void RenderWidgetHostImpl::DidUpdateBackingStore(
|
| const ViewHostMsg_UpdateRect_Params& params,
|
| const TimeTicks& paint_start) {
|
| - TRACE_EVENT0("renderer_host", "RenderWidgetHostImpl::DidUpdateBackingStore");
|
| + TRACE_EVENT2("renderer_host", "RenderWidgetHostImpl::DidUpdateBackingStore",
|
| + "input_number", params.latency_info.inputNumber,
|
| + "render_thread_frame_number",
|
| + params.latency_info.rendererMainFrameNumber);
|
| TimeTicks update_start = TimeTicks::Now();
|
|
|
| if (params.needs_ack) {
|
| @@ -2300,6 +2341,15 @@ void RenderWidgetHostImpl::AcknowledgeBufferPresent(
|
| }
|
| }
|
|
|
| +void RenderWidgetHostImpl::NotifyFrameDisplayed(
|
| + int route_id, int gpu_host_id,
|
| + const cc::LatencyInfo& latency_info) {
|
| + GpuProcessHostUIShim* ui_shim = GpuProcessHostUIShim::FromID(gpu_host_id);
|
| + if (ui_shim)
|
| + ui_shim->Send(new AcceleratedSurfaceMsg_FrameDisplayed(route_id,
|
| + latency_info));
|
| +}
|
| +
|
| void RenderWidgetHostImpl::AcknowledgeSwapBuffersToRenderer() {
|
| if (!is_threaded_compositing_enabled_)
|
| Send(new ViewMsg_SwapBuffers_ACK(routing_id_));
|
|
|