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

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

Issue 23983036: [Android] Provide synchronized input flush with BeginFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 years, 2 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_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 ContentViewCoreImpl* content_view_core) 107 ContentViewCoreImpl* content_view_core)
108 : host_(widget_host), 108 : host_(widget_host),
109 needs_begin_frame_(false), 109 needs_begin_frame_(false),
110 are_layers_attached_(true), 110 are_layers_attached_(true),
111 content_view_core_(NULL), 111 content_view_core_(NULL),
112 ime_adapter_android_(this), 112 ime_adapter_android_(this),
113 cached_background_color_(SK_ColorWHITE), 113 cached_background_color_(SK_ColorWHITE),
114 texture_id_in_layer_(0), 114 texture_id_in_layer_(0),
115 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId), 115 current_mailbox_output_surface_id_(kUndefinedOutputSurfaceId),
116 weak_ptr_factory_(this), 116 weak_ptr_factory_(this),
117 overscroll_effect_enabled_(true) { 117 overscroll_effect_enabled_(true),
118 flush_input_requested_(false) {
118 if (CompositorImpl::UsesDirectGL()) { 119 if (CompositorImpl::UsesDirectGL()) {
119 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); 120 surface_texture_transport_.reset(new SurfaceTextureTransportClient());
120 layer_ = surface_texture_transport_->Initialize(); 121 layer_ = surface_texture_transport_->Initialize();
121 layer_->SetIsDrawable(true); 122 layer_->SetIsDrawable(true);
122 } else { 123 } else {
123 if (CommandLine::ForCurrentProcess()->HasSwitch( 124 if (CommandLine::ForCurrentProcess()->HasSwitch(
124 switches::kEnableDelegatedRenderer)) { 125 switches::kEnableDelegatedRenderer)) {
125 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); 126 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this);
126 layer_ = delegated_renderer_layer_; 127 layer_ = delegated_renderer_layer_;
127 } else { 128 } else {
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 return; 454 return;
454 455
455 cached_background_color_ = color; 456 cached_background_color_ = color;
456 if (content_view_core_) 457 if (content_view_core_)
457 content_view_core_->OnBackgroundColorChanged(color); 458 content_view_core_->OnBackgroundColorChanged(color);
458 } 459 }
459 460
460 void RenderWidgetHostViewAndroid::SendBeginFrame( 461 void RenderWidgetHostViewAndroid::SendBeginFrame(
461 const cc::BeginFrameArgs& args) { 462 const cc::BeginFrameArgs& args) {
462 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame"); 463 TRACE_EVENT0("cc", "RenderWidgetHostViewAndroid::SendBeginFrame");
463 if (host_) 464 if (!host_)
464 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); 465 return;
466
467 if (flush_input_requested_) {
468 flush_input_requested_ = false;
469 host_->FlushInput();
470 content_view_core_->RemoveBeginFrameSubscriber();
brianderson 2013/09/25 22:23:14 Is it possible that this class gets destroyed afte
jdduke (slow) 2013/09/25 23:31:09 ContentViewCore will automatically reset any vsync
471 }
472
473 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
465 } 474 }
466 475
467 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame( 476 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame(
468 bool enabled) { 477 bool enabled) {
469 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame", 478 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrame",
470 "enabled", enabled); 479 "enabled", enabled);
471 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so 480 // ContentViewCoreImpl handles multiple subscribers to the BeginFrame, so
472 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame 481 // we have to make sure calls to ContentViewCoreImpl's SetNeedsBeginFrame
brianderson 2013/09/25 22:23:14 Comment should not refer to SetNeedsBeginFrame any
jdduke (slow) 2013/09/25 23:31:09 Done.
473 // are balanced, even if RenderWidgetHostViewAndroid's may not be. 482 // are balanced, even if RenderWidgetHostViewAndroid's may not be.
474 if (content_view_core_ && needs_begin_frame_ != enabled) { 483 if (content_view_core_ && needs_begin_frame_ != enabled) {
475 content_view_core_->SetNeedsBeginFrame(enabled); 484 if (enabled)
485 content_view_core_->AddBeginFrameSubscriber();
486 else
487 content_view_core_->RemoveBeginFrameSubscriber();
476 needs_begin_frame_ = enabled; 488 needs_begin_frame_ = enabled;
477 } 489 }
478 } 490 }
479 491
480 void RenderWidgetHostViewAndroid::OnStartContentIntent( 492 void RenderWidgetHostViewAndroid::OnStartContentIntent(
481 const GURL& content_url) { 493 const GURL& content_url) {
482 if (content_view_core_) 494 if (content_view_core_)
483 content_view_core_->StartContentIntent(content_url); 495 content_view_core_->StartContentIntent(content_url);
484 } 496 }
485 497
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
964 if (host_) { 976 if (host_) {
965 SynchronousCompositorImpl* compositor = 977 SynchronousCompositorImpl* compositor =
966 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(), 978 SynchronousCompositorImpl::FromID(host_->GetProcess()->GetID(),
967 host_->GetRoutingID()); 979 host_->GetRoutingID());
968 if (compositor) 980 if (compositor)
969 return compositor->HandleInputEvent(input_event); 981 return compositor->HandleInputEvent(input_event);
970 } 982 }
971 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 983 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
972 } 984 }
973 985
986 void RenderWidgetHostViewAndroid::OnSetNeedsFlushInput() {
987 if (flush_input_requested_)
988 return;
989 flush_input_requested_ = true;
990 content_view_core_->AddBeginFrameSubscriber();
991 }
992
974 void RenderWidgetHostViewAndroid::OnAccessibilityEvents( 993 void RenderWidgetHostViewAndroid::OnAccessibilityEvents(
975 const std::vector<AccessibilityHostMsg_EventParams>& params) { 994 const std::vector<AccessibilityHostMsg_EventParams>& params) {
976 if (!host_ || 995 if (!host_ ||
977 host_->accessibility_mode() != AccessibilityModeComplete || 996 host_->accessibility_mode() != AccessibilityModeComplete ||
978 !content_view_core_) { 997 !content_view_core_) {
979 return; 998 return;
980 } 999 }
981 1000
982 if (!GetBrowserAccessibilityManager()) { 1001 if (!GetBrowserAccessibilityManager()) {
983 SetBrowserAccessibilityManager( 1002 SetBrowserAccessibilityManager(
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 // RenderWidgetHostView, public: 1330 // RenderWidgetHostView, public:
1312 1331
1313 // static 1332 // static
1314 RenderWidgetHostView* 1333 RenderWidgetHostView*
1315 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1334 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1316 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1335 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1317 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1336 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1318 } 1337 }
1319 1338
1320 } // namespace content 1339 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698