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

Side by Side Diff: cc/scheduler/scheduler.cc

Issue 1194743002: cc: Remove ResourceUpdateQueue and ResourceUpdateController. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resourcequeue: header Created 5 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 unified diff | Download patch
« no previous file with comments | « cc/scheduler/scheduler.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/scheduler/scheduler.h" 5 #include "cc/scheduler/scheduler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 DCHECK(begin_impl_frame_deadline_task_.IsCancelled()); 267 DCHECK(begin_impl_frame_deadline_task_.IsCancelled());
268 state_machine_.DidCreateAndInitializeOutputSurface(); 268 state_machine_.DidCreateAndInitializeOutputSurface();
269 ProcessScheduledActions(); 269 ProcessScheduledActions();
270 } 270 }
271 271
272 void Scheduler::NotifyBeginMainFrameStarted() { 272 void Scheduler::NotifyBeginMainFrameStarted() {
273 TRACE_EVENT0("cc", "Scheduler::NotifyBeginMainFrameStarted"); 273 TRACE_EVENT0("cc", "Scheduler::NotifyBeginMainFrameStarted");
274 state_machine_.NotifyBeginMainFrameStarted(); 274 state_machine_.NotifyBeginMainFrameStarted();
275 } 275 }
276 276
277 base::TimeTicks Scheduler::AnticipatedDrawTime() const {
278 if (!frame_source_->NeedsBeginFrames() ||
279 begin_impl_frame_tracker_.DangerousMethodHasFinished())
280 return base::TimeTicks();
281
282 base::TimeTicks now = Now();
283 BeginFrameArgs args = begin_impl_frame_tracker_.Current();
284 base::TimeTicks timebase = std::max(args.frame_time, args.deadline);
285 int64 intervals =
286 1 + ((now - timebase) / begin_impl_frame_tracker_.Interval());
287 return timebase + (begin_impl_frame_tracker_.Interval() * intervals);
288 }
289
290 base::TimeTicks Scheduler::LastBeginImplFrameTime() { 277 base::TimeTicks Scheduler::LastBeginImplFrameTime() {
291 return begin_impl_frame_tracker_.Current().frame_time; 278 return begin_impl_frame_tracker_.Current().frame_time;
292 } 279 }
293 280
294 void Scheduler::SetupNextBeginFrameIfNeeded() { 281 void Scheduler::SetupNextBeginFrameIfNeeded() {
295 // Never call SetNeedsBeginFrames if the frame source already has the right 282 // Never call SetNeedsBeginFrames if the frame source already has the right
296 // value. 283 // value.
297 if (frame_source_->NeedsBeginFrames() != state_machine_.BeginFrameNeeded()) { 284 if (frame_source_->NeedsBeginFrames() != state_machine_.BeginFrameNeeded()) {
298 if (state_machine_.BeginFrameNeeded()) { 285 if (state_machine_.BeginFrameNeeded()) {
299 // Call SetNeedsBeginFrames(true) as soon as possible. 286 // Call SetNeedsBeginFrames(true) as soon as possible.
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 break; 716 break;
730 case SchedulerStateMachine::ACTION_INVALIDATE_OUTPUT_SURFACE: { 717 case SchedulerStateMachine::ACTION_INVALIDATE_OUTPUT_SURFACE: {
731 client_->ScheduledActionInvalidateOutputSurface(); 718 client_->ScheduledActionInvalidateOutputSurface();
732 break; 719 break;
733 } 720 }
734 } 721 }
735 } while (action != SchedulerStateMachine::ACTION_NONE); 722 } while (action != SchedulerStateMachine::ACTION_NONE);
736 723
737 SetupPollingMechanisms(); 724 SetupPollingMechanisms();
738 725
739 client_->DidAnticipatedDrawTimeChange(AnticipatedDrawTime());
740
741 ScheduleBeginImplFrameDeadlineIfNeeded(); 726 ScheduleBeginImplFrameDeadlineIfNeeded();
742 727
743 SetupNextBeginFrameIfNeeded(); 728 SetupNextBeginFrameIfNeeded();
744 } 729 }
745 730
746 scoped_refptr<base::trace_event::ConvertableToTraceFormat> Scheduler::AsValue() 731 scoped_refptr<base::trace_event::ConvertableToTraceFormat> Scheduler::AsValue()
747 const { 732 const {
748 scoped_refptr<base::trace_event::TracedValue> state = 733 scoped_refptr<base::trace_event::TracedValue> state =
749 new base::trace_event::TracedValue(); 734 new base::trace_event::TracedValue();
750 AsValueInto(state.get()); 735 AsValueInto(state.get());
(...skipping 10 matching lines...) Expand all
761 TRACE_EVENT_CATEGORY_GROUP_ENABLED( 746 TRACE_EVENT_CATEGORY_GROUP_ENABLED(
762 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"), 747 TRACE_DISABLED_BY_DEFAULT("cc.debug.scheduler.frames"),
763 &frame_tracing_enabled); 748 &frame_tracing_enabled);
764 if (frame_tracing_enabled) { 749 if (frame_tracing_enabled) {
765 state->BeginDictionary("frame_source_"); 750 state->BeginDictionary("frame_source_");
766 frame_source_->AsValueInto(state); 751 frame_source_->AsValueInto(state);
767 state->EndDictionary(); 752 state->EndDictionary();
768 } 753 }
769 754
770 state->BeginDictionary("scheduler_state"); 755 state->BeginDictionary("scheduler_state");
771 state->SetDouble("time_until_anticipated_draw_time_ms",
772 (AnticipatedDrawTime() - Now()).InMillisecondsF());
773 state->SetDouble("estimated_parent_draw_time_ms", 756 state->SetDouble("estimated_parent_draw_time_ms",
774 estimated_parent_draw_time_.InMillisecondsF()); 757 estimated_parent_draw_time_.InMillisecondsF());
775 state->SetBoolean("last_set_needs_begin_frame_", 758 state->SetBoolean("last_set_needs_begin_frame_",
776 frame_source_->NeedsBeginFrames()); 759 frame_source_->NeedsBeginFrames());
777 state->SetInteger("begin_retro_frame_args", 760 state->SetInteger("begin_retro_frame_args",
778 static_cast<int>(begin_retro_frame_args_.size())); 761 static_cast<int>(begin_retro_frame_args_.size()));
779 state->SetBoolean("begin_retro_frame_task", 762 state->SetBoolean("begin_retro_frame_task",
780 !begin_retro_frame_task_.IsCancelled()); 763 !begin_retro_frame_task_.IsCancelled());
781 state->SetBoolean("begin_impl_frame_deadline_task", 764 state->SetBoolean("begin_impl_frame_deadline_task",
782 !begin_impl_frame_deadline_task_.IsCancelled()); 765 !begin_impl_frame_deadline_task_.IsCancelled());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 804 }
822 805
823 bool Scheduler::IsBeginMainFrameSentOrStarted() const { 806 bool Scheduler::IsBeginMainFrameSentOrStarted() const {
824 return (state_machine_.commit_state() == 807 return (state_machine_.commit_state() ==
825 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT || 808 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_SENT ||
826 state_machine_.commit_state() == 809 state_machine_.commit_state() ==
827 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED); 810 SchedulerStateMachine::COMMIT_STATE_BEGIN_MAIN_FRAME_STARTED);
828 } 811 }
829 812
830 } // namespace cc 813 } // namespace cc
OLDNEW
« no previous file with comments | « cc/scheduler/scheduler.h ('k') | cc/scheduler/scheduler_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698