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

Unified Diff: content/browser/android/in_process/synchronous_compositor_impl.cc

Issue 619843002: cc: Make separate interface for BeginFrame ipc from OutputSurface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/android/in_process/synchronous_compositor_impl.cc
diff --git a/content/browser/android/in_process/synchronous_compositor_impl.cc b/content/browser/android/in_process/synchronous_compositor_impl.cc
index 702164b5a8fcefc139ed4ea4b00d57e9dbec8071..af64d90fda1a5948bb79e92d170c2cb6d8a38c91 100644
--- a/content/browser/android/in_process/synchronous_compositor_impl.cc
+++ b/content/browser/android/in_process/synchronous_compositor_impl.cc
@@ -4,9 +4,11 @@
#include "content/browser/android/in_process/synchronous_compositor_impl.h"
+#include "base/auto_reset.h"
#include "base/lazy_instance.h"
#include "base/message_loop/message_loop.h"
#include "cc/input/input_handler.h"
+#include "content/browser/android/in_process/synchronous_compositor_external_begin_frame_source.h"
#include "content/browser/android/in_process/synchronous_compositor_factory_impl.h"
#include "content/browser/android/in_process/synchronous_input_event_filter.h"
#include "content/browser/renderer_host/render_widget_host_view_android.h"
@@ -65,6 +67,7 @@ SynchronousCompositorImpl* SynchronousCompositorImpl::FromRoutingID(
SynchronousCompositorImpl::SynchronousCompositorImpl(WebContents* contents)
: compositor_client_(NULL),
output_surface_(NULL),
+ begin_frame_source_(NULL),
contents_(contents),
input_handler_(NULL),
weak_ptr_factory_(this) {
@@ -94,6 +97,20 @@ void SynchronousCompositor::SetRecordFullDocument(bool record_full_document) {
g_factory.Get().SetRecordFullDocument(record_full_document);
}
+scoped_ptr<cc::BeginFrameSource>
+SynchronousCompositorImpl::GetExternalBeginFrameSource() {
+ DCHECK(!begin_frame_source_);
+ scoped_ptr<SynchronousCompositorExternalBeginFrameSource> source(
+ new SynchronousCompositorExternalBeginFrameSource(this));
+ begin_frame_source_ = source.get();
+ return source.Pass();
+}
+
+bool SynchronousCompositorImpl::IsInvokingComposite() const {
+ DCHECK(output_surface_);
+ return output_surface_->invoking_composite();
boliu 2014/10/18 00:49:38 Can lift invoking_composite out of OutputSurface t
simonhong 2014/10/23 01:03:08 Done.
+}
+
bool SynchronousCompositorImpl::InitializeHwDraw() {
DCHECK(CalledOnValidThread());
DCHECK(output_surface_);
@@ -132,6 +149,7 @@ scoped_ptr<cc::CompositorFrame> SynchronousCompositorImpl::DemandDrawHw(
clip,
viewport_rect_for_tile_priority,
transform_for_tile_priority);
+
if (frame.get())
UpdateFrameMetaData(frame->metadata);
@@ -149,6 +167,7 @@ bool SynchronousCompositorImpl::DemandDrawSw(SkCanvas* canvas) {
DCHECK(output_surface_);
scoped_ptr<cc::CompositorFrame> frame = output_surface_->DemandDrawSw(canvas);
+
if (frame.get())
UpdateFrameMetaData(frame->metadata);
return !!frame.get();
@@ -227,10 +246,12 @@ void SynchronousCompositorImpl::DidStopFlinging() {
rwhv->DidStopFlinging();
}
-void SynchronousCompositorImpl::SetContinuousInvalidate(bool enable) {
+void SynchronousCompositorImpl::UpdateContinuousInvalidate() {
DCHECK(CalledOnValidThread());
- if (compositor_client_)
- compositor_client_->SetContinuousInvalidate(enable);
+ if (compositor_client_) {
+ compositor_client_->SetContinuousInvalidate(
+ begin_frame_source_->NeedsBeginFrames());
+ }
}
InputEventAckState SynchronousCompositorImpl::HandleInputEvent(
@@ -256,6 +277,11 @@ void SynchronousCompositorImpl::DidActivatePendingTree() {
compositor_client_->DidUpdateContent();
}
+void SynchronousCompositorImpl::BeginFrame() {
+ DCHECK(begin_frame_source_);
+ begin_frame_source_->BeginFrame();
+}
+
gfx::ScrollOffset SynchronousCompositorImpl::GetTotalScrollOffset() {
DCHECK(CalledOnValidThread());
if (compositor_client_) {

Powered by Google App Engine
This is Rietveld 408576698