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

Unified Diff: cc/trees/single_thread_proxy.cc

Issue 342413005: Revert of Make SingleThreadProxy a SchedulerClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/single_thread_proxy.cc
diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc
index 46d081437e78225c6823b57683dc16f6160bdd61..c254311a9300edb65bc8d9006bb6e5c613c6f6f1 100644
--- a/cc/trees/single_thread_proxy.cc
+++ b/cc/trees/single_thread_proxy.cc
@@ -33,11 +33,7 @@
layer_tree_host_(layer_tree_host),
client_(client),
next_frame_is_newly_committed_frame_(false),
- inside_draw_(false),
- defer_commits_(false),
- commit_was_deferred_(false),
- commit_requested_(false),
- weak_factory_(this) {
+ inside_draw_(false) {
TRACE_EVENT0("cc", "SingleThreadProxy::SingleThreadProxy");
DCHECK(Proxy::IsMainThread());
DCHECK(layer_tree_host);
@@ -77,26 +73,13 @@
TRACE_EVENT0("cc", "SingleThreadProxy::SetLayerTreeHostClientReady");
// Scheduling is controlled by the embedder in the single thread case, so
// nothing to do.
- DCHECK(Proxy::IsMainThread());
- DebugScopedSetImplThread impl(this);
- if (layer_tree_host_->settings().single_thread_proxy_scheduler &&
- !scheduler_on_impl_thread_) {
- SchedulerSettings scheduler_settings(layer_tree_host_->settings());
- scheduler_on_impl_thread_ = Scheduler::Create(this,
- scheduler_settings,
- layer_tree_host_->id(),
- MainThreadTaskRunner());
- scheduler_on_impl_thread_->SetCanStart();
- scheduler_on_impl_thread_->SetVisible(layer_tree_host_impl_->visible());
- }
}
void SingleThreadProxy::SetVisible(bool visible) {
TRACE_EVENT0("cc", "SingleThreadProxy::SetVisible");
DebugScopedSetImplThread impl(this);
layer_tree_host_impl_->SetVisible(visible);
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->SetVisible(layer_tree_host_impl_->visible());
+
// Changing visibility could change ShouldComposite().
UpdateBackgroundAnimateTicking();
}
@@ -123,14 +106,9 @@
layer_tree_host_->OnCreateAndInitializeOutputSurfaceAttempted(success);
- if (success) {
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->DidCreateAndInitializeOutputSurface();
- } else if (Proxy::MainThreadTaskRunner()) {
- Proxy::MainThreadTaskRunner()->PostTask(
- FROM_HERE,
- base::Bind(&SingleThreadProxy::CreateAndInitializeOutputSurface,
- weak_factory_.GetWeakPtr()));
+ if (!success) {
+ // Force another recreation attempt to happen by requesting another commit.
+ SetNeedsCommit();
}
}
@@ -144,40 +122,17 @@
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsAnimate");
DCHECK(Proxy::IsMainThread());
client_->ScheduleAnimation();
- SetNeedsCommit();
}
void SingleThreadProxy::SetNeedsUpdateLayers() {
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsUpdateLayers");
DCHECK(Proxy::IsMainThread());
- SetNeedsCommit();
-}
-
-void SingleThreadProxy::DoCommit(base::TimeTicks frame_begin_time) {
+ client_->ScheduleComposite();
+}
+
+void SingleThreadProxy::DoCommit(scoped_ptr<ResourceUpdateQueue> queue) {
TRACE_EVENT0("cc", "SingleThreadProxy::DoCommit");
DCHECK(Proxy::IsMainThread());
- layer_tree_host_->WillBeginMainFrame();
- layer_tree_host_->Layout();
- layer_tree_host_->UpdateClientAnimations(frame_begin_time);
- layer_tree_host_->AnimateLayers(frame_begin_time);
- commit_requested_ = false;
-
- if (PrioritizedResourceManager* contents_texture_manager =
- layer_tree_host_->contents_texture_manager()) {
- contents_texture_manager->UnlinkAndClearEvictedBackings();
- contents_texture_manager->SetMaxMemoryLimitBytes(
- layer_tree_host_impl_->memory_allocation_limit_bytes());
- contents_texture_manager->SetExternalPriorityCutoff(
- layer_tree_host_impl_->memory_allocation_priority_cutoff());
- }
-
- scoped_ptr<ResourceUpdateQueue> queue =
- make_scoped_ptr(new ResourceUpdateQueue);
-
- layer_tree_host_->UpdateLayers(queue.get());
-
- layer_tree_host_->WillCommit();
-
// Commit immediately.
{
DebugScopedSetMainThreadBlocked main_thread_blocked(this);
@@ -210,8 +165,6 @@
layer_tree_host_->FinishCommitOnImplThread(layer_tree_host_impl_.get());
layer_tree_host_impl_->CommitComplete();
-
- UpdateBackgroundAnimateTicking();
#if DCHECK_IS_ON
// In the single-threaded case, the scale and scroll deltas should never be
@@ -229,64 +182,32 @@
stats_instrumentation->AccumulateAndClearMainThreadStats();
}
layer_tree_host_->CommitComplete();
- layer_tree_host_->DidBeginMainFrame();
- timing_history_.DidCommit();
-
next_frame_is_newly_committed_frame_ = true;
}
void SingleThreadProxy::SetNeedsCommit() {
DCHECK(Proxy::IsMainThread());
- DebugScopedSetImplThread impl(this);
client_->ScheduleComposite();
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->SetNeedsCommit();
- commit_requested_ = true;
}
void SingleThreadProxy::SetNeedsRedraw(const gfx::Rect& damage_rect) {
TRACE_EVENT0("cc", "SingleThreadProxy::SetNeedsRedraw");
- DCHECK(Proxy::IsMainThread());
- DebugScopedSetImplThread impl(this);
+ SetNeedsRedrawRectOnImplThread(damage_rect);
client_->ScheduleComposite();
- SetNeedsRedrawRectOnImplThread(damage_rect);
}
void SingleThreadProxy::SetNextCommitWaitsForActivation() {
// There is no activation here other than commit. So do nothing.
- DCHECK(Proxy::IsMainThread());
}
void SingleThreadProxy::SetDeferCommits(bool defer_commits) {
- DCHECK(Proxy::IsMainThread());
- // Deferring commits only makes sense if there's a scheduler.
- if (!scheduler_on_impl_thread_)
- return;
- if (defer_commits_ == defer_commits)
- return;
-
- if (defer_commits)
- TRACE_EVENT_ASYNC_BEGIN0("cc", "SingleThreadProxy::SetDeferCommits", this);
- else
- TRACE_EVENT_ASYNC_END0("cc", "SingleThreadProxy::SetDeferCommits", this);
-
- defer_commits_ = defer_commits;
- if (!defer_commits_ && commit_was_deferred_) {
- scheduler_on_impl_thread_->NotifyBeginMainFrameStarted();
- scheduler_on_impl_thread_->NotifyReadyToCommit();
- commit_was_deferred_ = false;
- }
-}
-
-bool SingleThreadProxy::CommitRequested() const {
- DCHECK(Proxy::IsMainThread());
- return commit_requested_;
-}
-
-bool SingleThreadProxy::BeginMainFrameRequested() const {
- DCHECK(Proxy::IsMainThread());
- return commit_requested_;
-}
+ // Thread-only feature.
+ NOTREACHED();
+}
+
+bool SingleThreadProxy::CommitRequested() const { return false; }
+
+bool SingleThreadProxy::BeginMainFrameRequested() const { return false; }
size_t SingleThreadProxy::MaxPartialTextureUpdates() const {
return std::numeric_limits<size_t>::max();
@@ -302,7 +223,6 @@
BlockingTaskRunner::CapturePostTasks blocked;
layer_tree_host_->DeleteContentsTexturesOnImplThread(
layer_tree_host_impl_->resource_provider());
- scheduler_on_impl_thread_.reset();
layer_tree_host_impl_.reset();
}
layer_tree_host_ = NULL;
@@ -313,19 +233,15 @@
"cc", "SingleThreadProxy::OnCanDrawStateChanged", "can_draw", can_draw);
DCHECK(Proxy::IsImplThread());
UpdateBackgroundAnimateTicking();
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->SetCanDraw(can_draw);
}
void SingleThreadProxy::NotifyReadyToActivate() {
- // Impl-side painting only.
+ // Thread-only feature.
NOTREACHED();
}
void SingleThreadProxy::SetNeedsRedrawOnImplThread() {
client_->ScheduleComposite();
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->SetNeedsRedraw();
}
void SingleThreadProxy::SetNeedsAnimateOnImplThread() {
@@ -333,14 +249,17 @@
}
void SingleThreadProxy::SetNeedsManageTilesOnImplThread() {
- // Impl-side painting only.
+ // Thread-only/Impl-side-painting-only feature.
NOTREACHED();
}
void SingleThreadProxy::SetNeedsRedrawRectOnImplThread(
const gfx::Rect& damage_rect) {
+ // TODO(brianderson): Once we move render_widget scheduling into this class,
+ // we can treat redraw requests more efficiently than CommitAndRedraw
+ // requests.
layer_tree_host_impl_->SetViewportDamage(damage_rect);
- SetNeedsRedrawOnImplThread();
+ SetNeedsCommit();
}
void SingleThreadProxy::DidInitializeVisibleTileOnImplThread() {
@@ -350,8 +269,6 @@
void SingleThreadProxy::SetNeedsCommitOnImplThread() {
client_->ScheduleComposite();
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->SetNeedsCommit();
}
void SingleThreadProxy::PostAnimationEventsToMainThreadOnImplThread(
@@ -388,140 +305,53 @@
layer_tree_host_impl_->GetRendererCapabilities().MainThreadCapabilities();
}
-void SingleThreadProxy::DidActivatePendingTree() {
- // Impl-side painting only.
- NOTREACHED();
-}
-
-void SingleThreadProxy::DidManageTiles() {
- // Impl-side painting only.
- NOTREACHED();
-}
-
void SingleThreadProxy::DidLoseOutputSurfaceOnImplThread() {
TRACE_EVENT0("cc", "SingleThreadProxy::DidLoseOutputSurfaceOnImplThread");
- {
- DebugScopedSetMainThread main(this);
- // This must happen before we notify the scheduler as it may try to recreate
- // the output surface if already in BEGIN_IMPL_FRAME_STATE_IDLE.
- layer_tree_host_->DidLoseOutputSurface();
- }
+ // Cause a commit so we can notice the lost context.
+ SetNeedsCommitOnImplThread();
client_->DidAbortSwapBuffers();
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->DidLoseOutputSurface();
}
void SingleThreadProxy::DidSwapBuffersOnImplThread() {
- TRACE_EVENT0("cc", "SingleThreadProxy::DidSwapBuffersOnImplThread");
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->DidSwapBuffers();
client_->DidPostSwapBuffers();
}
void SingleThreadProxy::DidSwapBuffersCompleteOnImplThread() {
TRACE_EVENT0("cc", "SingleThreadProxy::DidSwapBuffersCompleteOnImplThread");
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->DidSwapBuffersComplete();
- layer_tree_host_->DidCompleteSwapBuffers();
-}
-
-void SingleThreadProxy::BeginFrame(const BeginFrameArgs& args) {
- TRACE_EVENT0("cc", "SingleThreadProxy::BeginFrame");
- if (scheduler_on_impl_thread_)
- scheduler_on_impl_thread_->BeginImplFrame(args);
-}
-
+ client_->DidCompleteSwapBuffers();
+}
+
+// Called by the legacy scheduling path (e.g. where render_widget does the
+// scheduling)
void SingleThreadProxy::CompositeImmediately(base::TimeTicks frame_begin_time) {
TRACE_EVENT0("cc", "SingleThreadProxy::CompositeImmediately");
DCHECK(Proxy::IsMainThread());
DCHECK(!layer_tree_host_->output_surface_lost());
- DoCommit(frame_begin_time);
+ layer_tree_host_->AnimateLayers(frame_begin_time);
+
+ if (PrioritizedResourceManager* contents_texture_manager =
+ layer_tree_host_->contents_texture_manager()) {
+ contents_texture_manager->UnlinkAndClearEvictedBackings();
+ contents_texture_manager->SetMaxMemoryLimitBytes(
+ layer_tree_host_impl_->memory_allocation_limit_bytes());
+ contents_texture_manager->SetExternalPriorityCutoff(
+ layer_tree_host_impl_->memory_allocation_priority_cutoff());
+ }
+
+ scoped_ptr<ResourceUpdateQueue> queue =
+ make_scoped_ptr(new ResourceUpdateQueue);
+ layer_tree_host_->UpdateLayers(queue.get());
+ layer_tree_host_->WillCommit();
+ DoCommit(queue.Pass());
+ layer_tree_host_->DidBeginMainFrame();
LayerTreeHostImpl::FrameData frame;
- DoComposite(frame_begin_time, &frame);
-}
-
-scoped_ptr<base::Value> SingleThreadProxy::AsValue() const {
- scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
- {
- // The following line casts away const modifiers because it is just
- // setting debug state. We still want the AsValue() function and its
- // call chain to be const throughout.
- DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this));
-
- state->Set("layer_tree_host_impl",
- layer_tree_host_impl_->AsValue().release());
- }
- return state.PassAs<base::Value>();
-}
-
-void SingleThreadProxy::ForceSerializeOnSwapBuffers() {
- {
- DebugScopedSetImplThread impl(this);
- if (layer_tree_host_impl_->renderer()) {
- DCHECK(!layer_tree_host_->output_surface_lost());
- layer_tree_host_impl_->renderer()->DoNoOp();
- }
- }
-}
-
-bool SingleThreadProxy::ShouldComposite() const {
- DCHECK(Proxy::IsImplThread());
- return layer_tree_host_impl_->visible() &&
- layer_tree_host_impl_->CanDraw();
-}
-
-void SingleThreadProxy::UpdateBackgroundAnimateTicking() {
- DCHECK(Proxy::IsImplThread());
- layer_tree_host_impl_->UpdateBackgroundAnimateTicking(
- !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer());
-}
-
-DrawResult SingleThreadProxy::DoComposite(base::TimeTicks frame_begin_time,
- LayerTreeHostImpl::FrameData* frame) {
- TRACE_EVENT0("cc", "SingleThreadProxy::DoComposite");
- DCHECK(!layer_tree_host_->output_surface_lost());
-
- {
- DebugScopedSetImplThread impl(this);
- base::AutoReset<bool> mark_inside(&inside_draw_, true);
-
- // We guard PrepareToDraw() with CanDraw() because it always returns a valid
- // frame, so can only be used when such a frame is possible. Since
- // DrawLayers() depends on the result of PrepareToDraw(), it is guarded on
- // CanDraw() as well.
- if (!ShouldComposite()) {
- UpdateBackgroundAnimateTicking();
- return DRAW_ABORTED_CANT_DRAW;
- }
-
- timing_history_.DidStartDrawing();
-
- layer_tree_host_impl_->Animate(
- layer_tree_host_impl_->CurrentFrameTimeTicks());
- UpdateBackgroundAnimateTicking();
-
- if (!layer_tree_host_impl_->IsContextLost()) {
- layer_tree_host_impl_->PrepareToDraw(frame);
- layer_tree_host_impl_->DrawLayers(frame, frame_begin_time);
- layer_tree_host_impl_->DidDrawAllLayers(*frame);
- }
-
- bool start_ready_animations = true;
- layer_tree_host_impl_->UpdateAnimationState(start_ready_animations);
-
- layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame();
-
- timing_history_.DidFinishDrawing();
- }
-
- {
- DebugScopedSetImplThread impl(this);
-
- if (layer_tree_host_impl_->IsContextLost()) {
- DidLoseOutputSurfaceOnImplThread();
- } else {
+ if (DoComposite(frame_begin_time, &frame)) {
+ {
+ DebugScopedSetMainThreadBlocked main_thread_blocked(this);
+ DebugScopedSetImplThread impl(this);
+
// This CapturePostTasks should be destroyed before
// DidCommitAndDrawFrame() is called since that goes out to the embedder,
// and we want the embedder to receive its callbacks before that.
@@ -529,20 +359,97 @@
// the DidCommitAndDrawFrame() must be post-tasked from the impl thread
// there as the main thread is not blocked, so any posted tasks inside
// the swap buffers will execute first.
- DebugScopedSetMainThreadBlocked main_thread_blocked(this);
-
BlockingTaskRunner::CapturePostTasks blocked;
- layer_tree_host_impl_->SwapBuffers(*frame);
+
+ layer_tree_host_impl_->SwapBuffers(frame);
}
- }
- DidCommitAndDrawFrame();
-
- return DRAW_SUCCESS;
-}
-
-void SingleThreadProxy::DidCommitAndDrawFrame() {
+ DidSwapFrame();
+ }
+}
+
+scoped_ptr<base::Value> SingleThreadProxy::AsValue() const {
+ scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
+ {
+ // The following line casts away const modifiers because it is just
+ // setting debug state. We still want the AsValue() function and its
+ // call chain to be const throughout.
+ DebugScopedSetImplThread impl(const_cast<SingleThreadProxy*>(this));
+
+ state->Set("layer_tree_host_impl",
+ layer_tree_host_impl_->AsValue().release());
+ }
+ return state.PassAs<base::Value>();
+}
+
+void SingleThreadProxy::ForceSerializeOnSwapBuffers() {
+ {
+ DebugScopedSetImplThread impl(this);
+ if (layer_tree_host_impl_->renderer()) {
+ DCHECK(!layer_tree_host_->output_surface_lost());
+ layer_tree_host_impl_->renderer()->DoNoOp();
+ }
+ }
+}
+
+bool SingleThreadProxy::ShouldComposite() const {
+ DCHECK(Proxy::IsImplThread());
+ return layer_tree_host_impl_->visible() &&
+ layer_tree_host_impl_->CanDraw();
+}
+
+void SingleThreadProxy::UpdateBackgroundAnimateTicking() {
+ DCHECK(Proxy::IsImplThread());
+ layer_tree_host_impl_->UpdateBackgroundAnimateTicking(
+ !ShouldComposite() && layer_tree_host_impl_->active_tree()->root_layer());
+}
+
+bool SingleThreadProxy::DoComposite(
+ base::TimeTicks frame_begin_time,
+ LayerTreeHostImpl::FrameData* frame) {
+ TRACE_EVENT0("cc", "SingleThreadProxy::DoComposite");
+ DCHECK(!layer_tree_host_->output_surface_lost());
+
+ bool lost_output_surface = false;
+ {
+ DebugScopedSetImplThread impl(this);
+ base::AutoReset<bool> mark_inside(&inside_draw_, true);
+
+ // We guard PrepareToDraw() with CanDraw() because it always returns a valid
+ // frame, so can only be used when such a frame is possible. Since
+ // DrawLayers() depends on the result of PrepareToDraw(), it is guarded on
+ // CanDraw() as well.
+ if (!ShouldComposite()) {
+ UpdateBackgroundAnimateTicking();
+ return false;
+ }
+
+ layer_tree_host_impl_->Animate(
+ layer_tree_host_impl_->CurrentFrameTimeTicks());
+ UpdateBackgroundAnimateTicking();
+
+ if (!layer_tree_host_impl_->IsContextLost()) {
+ layer_tree_host_impl_->PrepareToDraw(frame);
+ layer_tree_host_impl_->DrawLayers(frame, frame_begin_time);
+ layer_tree_host_impl_->DidDrawAllLayers(*frame);
+ }
+ lost_output_surface = layer_tree_host_impl_->IsContextLost();
+
+ bool start_ready_animations = true;
+ layer_tree_host_impl_->UpdateAnimationState(start_ready_animations);
+
+ layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame();
+ }
+
+ if (lost_output_surface) {
+ layer_tree_host_->DidLoseOutputSurface();
+ return false;
+ }
+
+ return true;
+}
+
+void SingleThreadProxy::DidSwapFrame() {
if (next_frame_is_newly_committed_frame_) {
- DebugScopedSetMainThread main(this);
next_frame_is_newly_committed_frame_ = false;
layer_tree_host_->DidCommitAndDrawFrame();
}
@@ -550,112 +457,4 @@
bool SingleThreadProxy::CommitPendingForTesting() { return false; }
-scoped_ptr<base::Value> SingleThreadProxy::SchedulerAsValueForTesting() {
- DebugScopedSetImplThread impl(this);
- if (!scheduler_on_impl_thread_)
- return make_scoped_ptr(base::Value::CreateNullValue()).Pass();
- return scheduler_on_impl_thread_->AsValue().Pass();
-}
-
-void SingleThreadProxy::SetNeedsBeginFrame(bool enable) {
- layer_tree_host_impl_->SetNeedsBeginFrame(enable);
-}
-
-void SingleThreadProxy::WillBeginImplFrame(const BeginFrameArgs& args) {
- layer_tree_host_impl_->WillBeginImplFrame(args);
-}
-
-void SingleThreadProxy::ScheduledActionSendBeginMainFrame() {
- TRACE_EVENT0("cc", "SingleThreadProxy::ScheduledActionSendBeginMainFrame");
- if (defer_commits_) {
- DCHECK(!commit_was_deferred_);
- commit_was_deferred_ = true;
- layer_tree_host_->DidDeferCommit();
- return;
- }
- timing_history_.DidBeginMainFrame();
-
- DCHECK(scheduler_on_impl_thread_);
- scheduler_on_impl_thread_->NotifyBeginMainFrameStarted();
- scheduler_on_impl_thread_->NotifyReadyToCommit();
-}
-
-DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible() {
- DebugScopedSetImplThread impl(this);
- if (layer_tree_host_impl_->IsContextLost()) {
- DidCommitAndDrawFrame();
- return DRAW_SUCCESS;
- }
-
- LayerTreeHostImpl::FrameData frame;
- return DoComposite(layer_tree_host_impl_->CurrentFrameTimeTicks(), &frame);
-}
-
-DrawResult SingleThreadProxy::ScheduledActionDrawAndSwapForced() {
- NOTREACHED();
- return INVALID_RESULT;
-}
-
-void SingleThreadProxy::ScheduledActionCommit() {
- DebugScopedSetMainThread main(this);
- DoCommit(layer_tree_host_impl_->CurrentFrameTimeTicks());
-}
-
-void SingleThreadProxy::ScheduledActionAnimate() {
- TRACE_EVENT0("cc", "ScheduledActionAnimate");
- layer_tree_host_impl_->Animate(
- layer_tree_host_impl_->CurrentFrameTimeTicks());
-}
-
-void SingleThreadProxy::ScheduledActionUpdateVisibleTiles() {
- // Impl-side painting only.
- NOTREACHED();
-}
-
-void SingleThreadProxy::ScheduledActionActivatePendingTree() {
- // Impl-side painting only.
- NOTREACHED();
-}
-
-void SingleThreadProxy::ScheduledActionBeginOutputSurfaceCreation() {
- DebugScopedSetMainThread main(this);
- DCHECK(scheduler_on_impl_thread_);
- // If possible, create the output surface in a post task. Synchronously
- // creating the output surface makes tests more awkward since this differs
- // from the ThreadProxy behavior. However, sometimes there is no
- // task runner.
- if (Proxy::MainThreadTaskRunner()) {
- Proxy::MainThreadTaskRunner()->PostTask(
- FROM_HERE,
- base::Bind(&SingleThreadProxy::CreateAndInitializeOutputSurface,
- weak_factory_.GetWeakPtr()));
- } else {
- CreateAndInitializeOutputSurface();
- }
-}
-
-void SingleThreadProxy::ScheduledActionManageTiles() {
- // Impl-side painting only.
- NOTREACHED();
-}
-
-void SingleThreadProxy::DidAnticipatedDrawTimeChange(base::TimeTicks time) {
-}
-
-base::TimeDelta SingleThreadProxy::DrawDurationEstimate() {
- return timing_history_.DrawDurationEstimate();
-}
-
-base::TimeDelta SingleThreadProxy::BeginMainFrameToCommitDurationEstimate() {
- return timing_history_.BeginMainFrameToCommitDurationEstimate();
-}
-
-base::TimeDelta SingleThreadProxy::CommitToActivateDurationEstimate() {
- return timing_history_.CommitToActivateDurationEstimate();
-}
-
-void SingleThreadProxy::DidBeginImplFrameDeadline() {
- layer_tree_host_impl_->ResetCurrentFrameTimeForNextFrame();
-}
-
} // namespace cc
« no previous file with comments | « cc/trees/single_thread_proxy.h ('k') | cc/trees/thread_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698