Commit a237dea3 authored by Xunran Ding's avatar Xunran Ding Committed by Commit Bot

Convert scheduler states enums to enum class

The cc/scheduler/scheduler_state_machine uses a lot of enums.
enums are not real types and hence have subtle problems.
C++ introduced the concept of "enum class" types which would
be better replacements.

BUG=440759

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I12ce9ee05b668bee5c2f84bbe522edd741d2bd56
Reviewed-on: https://chromium-review.googlesource.com/709094
Commit-Queue: Alexander Timin <altimin@chromium.org>
Reviewed-by: default avatarSami Kyöstilä <skyostil@chromium.org>
Cr-Commit-Position: refs/heads/master@{#520959}
parent f05f36fd
...@@ -856,6 +856,7 @@ Xu Xing <xing.xu@intel.com> ...@@ -856,6 +856,7 @@ Xu Xing <xing.xu@intel.com>
Xuefei Ren <xrenishere@gmail.com> Xuefei Ren <xrenishere@gmail.com>
Xueqing Huang <huangxueqing@xiaomi.com> Xueqing Huang <huangxueqing@xiaomi.com>
Xun Sun <xun.sun@intel.com> Xun Sun <xun.sun@intel.com>
Xunran Ding <dingxunran@gmail.com>
Yael Aharon <yael.aharon@intel.com> Yael Aharon <yael.aharon@intel.com>
Yair Yogev <progame@chromium.org> Yair Yogev <progame@chromium.org>
Yan Wang <yan0422.wang@samsung.com> Yan Wang <yan0422.wang@samsung.com>
......
This diff is collapsed.
...@@ -189,7 +189,7 @@ class CC_EXPORT Scheduler : public viz::BeginFrameObserverBase { ...@@ -189,7 +189,7 @@ class CC_EXPORT Scheduler : public viz::BeginFrameObserverBase {
SchedulerStateMachine::BeginImplFrameDeadlineMode SchedulerStateMachine::BeginImplFrameDeadlineMode
begin_impl_frame_deadline_mode_ = begin_impl_frame_deadline_mode_ =
SchedulerStateMachine::BEGIN_IMPL_FRAME_DEADLINE_MODE_NONE; SchedulerStateMachine::BeginImplFrameDeadlineMode::NONE;
base::TimeTicks deadline_; base::TimeTicks deadline_;
base::TimeTicks deadline_scheduled_at_; base::TimeTicks deadline_scheduled_at_;
...@@ -203,7 +203,7 @@ class CC_EXPORT Scheduler : public viz::BeginFrameObserverBase { ...@@ -203,7 +203,7 @@ class CC_EXPORT Scheduler : public viz::BeginFrameObserverBase {
SchedulerStateMachine state_machine_; SchedulerStateMachine state_machine_;
bool inside_process_scheduled_actions_ = false; bool inside_process_scheduled_actions_ = false;
SchedulerStateMachine::Action inside_action_ = SchedulerStateMachine::Action inside_action_ =
SchedulerStateMachine::ACTION_NONE; SchedulerStateMachine::Action::NONE;
bool stopped_ = false; bool stopped_ = false;
......
This diff is collapsed.
...@@ -50,48 +50,48 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -50,48 +50,48 @@ class CC_EXPORT SchedulerStateMachine {
explicit SchedulerStateMachine(const SchedulerSettings& settings); explicit SchedulerStateMachine(const SchedulerSettings& settings);
~SchedulerStateMachine(); ~SchedulerStateMachine();
enum LayerTreeFrameSinkState { enum class LayerTreeFrameSinkState {
LAYER_TREE_FRAME_SINK_NONE, NONE,
LAYER_TREE_FRAME_SINK_ACTIVE, ACTIVE,
LAYER_TREE_FRAME_SINK_CREATING, CREATING,
LAYER_TREE_FRAME_SINK_WAITING_FOR_FIRST_COMMIT, WAITING_FOR_FIRST_COMMIT,
LAYER_TREE_FRAME_SINK_WAITING_FOR_FIRST_ACTIVATION, WAITING_FOR_FIRST_ACTIVATION,
}; };
static const char* LayerTreeFrameSinkStateToString( static const char* LayerTreeFrameSinkStateToString(
LayerTreeFrameSinkState state); LayerTreeFrameSinkState state);
// Note: BeginImplFrameState does not cycle through these states in a fixed // Note: BeginImplFrameState does not cycle through these states in a fixed
// order on all platforms. It's up to the scheduler to set these correctly. // order on all platforms. It's up to the scheduler to set these correctly.
enum BeginImplFrameState { enum class BeginImplFrameState {
BEGIN_IMPL_FRAME_STATE_IDLE, IDLE,
BEGIN_IMPL_FRAME_STATE_INSIDE_BEGIN_FRAME, INSIDE_BEGIN_FRAME,
BEGIN_IMPL_FRAME_STATE_INSIDE_DEADLINE, INSIDE_DEADLINE,
}; };
static const char* BeginImplFrameStateToString(BeginImplFrameState state); static const char* BeginImplFrameStateToString(BeginImplFrameState state);
enum BeginImplFrameDeadlineMode { enum class BeginImplFrameDeadlineMode {
BEGIN_IMPL_FRAME_DEADLINE_MODE_NONE, NONE,
BEGIN_IMPL_FRAME_DEADLINE_MODE_IMMEDIATE, IMMEDIATE,
BEGIN_IMPL_FRAME_DEADLINE_MODE_REGULAR, REGULAR,
BEGIN_IMPL_FRAME_DEADLINE_MODE_LATE, LATE,
BEGIN_IMPL_FRAME_DEADLINE_MODE_BLOCKED, BLOCKED,
}; };
static const char* BeginImplFrameDeadlineModeToString( static const char* BeginImplFrameDeadlineModeToString(
BeginImplFrameDeadlineMode mode); BeginImplFrameDeadlineMode mode);
enum BeginMainFrameState { enum class BeginMainFrameState {
BEGIN_MAIN_FRAME_STATE_IDLE, IDLE,
BEGIN_MAIN_FRAME_STATE_SENT, SENT,
BEGIN_MAIN_FRAME_STATE_STARTED, STARTED,
BEGIN_MAIN_FRAME_STATE_READY_TO_COMMIT, READY_TO_COMMIT,
}; };
static const char* BeginMainFrameStateToString(BeginMainFrameState state); static const char* BeginMainFrameStateToString(BeginMainFrameState state);
enum ForcedRedrawOnTimeoutState { enum class ForcedRedrawOnTimeoutState {
FORCED_REDRAW_STATE_IDLE, IDLE,
FORCED_REDRAW_STATE_WAITING_FOR_COMMIT, WAITING_FOR_COMMIT,
FORCED_REDRAW_STATE_WAITING_FOR_ACTIVATION, WAITING_FOR_ACTIVATION,
FORCED_REDRAW_STATE_WAITING_FOR_DRAW, WAITING_FOR_DRAW,
}; };
static const char* ForcedRedrawOnTimeoutStateToString( static const char* ForcedRedrawOnTimeoutStateToString(
ForcedRedrawOnTimeoutState state); ForcedRedrawOnTimeoutState state);
...@@ -101,9 +101,9 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -101,9 +101,9 @@ class CC_EXPORT SchedulerStateMachine {
} }
bool CommitPending() const { bool CommitPending() const {
return begin_main_frame_state_ == BEGIN_MAIN_FRAME_STATE_SENT || return begin_main_frame_state_ == BeginMainFrameState::SENT ||
begin_main_frame_state_ == BEGIN_MAIN_FRAME_STATE_STARTED || begin_main_frame_state_ == BeginMainFrameState::STARTED ||
begin_main_frame_state_ == BEGIN_MAIN_FRAME_STATE_READY_TO_COMMIT; begin_main_frame_state_ == BeginMainFrameState::READY_TO_COMMIT;
} }
bool NewActiveTreeLikely() const { bool NewActiveTreeLikely() const {
...@@ -113,19 +113,19 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -113,19 +113,19 @@ class CC_EXPORT SchedulerStateMachine {
bool RedrawPending() const { return needs_redraw_; } bool RedrawPending() const { return needs_redraw_; }
bool PrepareTilesPending() const { return needs_prepare_tiles_; } bool PrepareTilesPending() const { return needs_prepare_tiles_; }
enum Action { enum class Action {
ACTION_NONE, NONE,
ACTION_SEND_BEGIN_MAIN_FRAME, SEND_BEGIN_MAIN_FRAME,
ACTION_COMMIT, COMMIT,
ACTION_ACTIVATE_SYNC_TREE, ACTIVATE_SYNC_TREE,
ACTION_PERFORM_IMPL_SIDE_INVALIDATION, PERFORM_IMPL_SIDE_INVALIDATION,
ACTION_DRAW_IF_POSSIBLE, DRAW_IF_POSSIBLE,
ACTION_DRAW_FORCED, DRAW_FORCED,
ACTION_DRAW_ABORT, DRAW_ABORT,
ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION, BEGIN_LAYER_TREE_FRAME_SINK_CREATION,
ACTION_PREPARE_TILES, PREPARE_TILES,
ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK, INVALIDATE_LAYER_TREE_FRAME_SINK,
ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_SENT, NOTIFY_BEGIN_MAIN_FRAME_NOT_SENT,
}; };
static const char* ActionToString(Action action); static const char* ActionToString(Action action);
...@@ -232,12 +232,12 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -232,12 +232,12 @@ class CC_EXPORT SchedulerStateMachine {
// active). // active).
void SetNeedsOneBeginImplFrame(); void SetNeedsOneBeginImplFrame();
// Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME // Call this only in response to receiving an Action::SEND_BEGIN_MAIN_FRAME
// from NextAction. // from NextAction.
// Indicates that all painting is complete. // Indicates that all painting is complete.
void NotifyReadyToCommit(); void NotifyReadyToCommit();
// Call this only in response to receiving an ACTION_SEND_BEGIN_MAIN_FRAME // Call this only in response to receiving an Action::SEND_BEGIN_MAIN_FRAME
// from NextAction if the client rejects the BeginMainFrame message. // from NextAction if the client rejects the BeginMainFrame message.
void BeginMainFrameAborted(CommitEarlyOutReason reason); void BeginMainFrameAborted(CommitEarlyOutReason reason);
...@@ -324,10 +324,11 @@ class CC_EXPORT SchedulerStateMachine { ...@@ -324,10 +324,11 @@ class CC_EXPORT SchedulerStateMachine {
const SchedulerSettings settings_; const SchedulerSettings settings_;
LayerTreeFrameSinkState layer_tree_frame_sink_state_ = LayerTreeFrameSinkState layer_tree_frame_sink_state_ =
LAYER_TREE_FRAME_SINK_NONE; LayerTreeFrameSinkState::NONE;
BeginImplFrameState begin_impl_frame_state_ = BEGIN_IMPL_FRAME_STATE_IDLE; BeginImplFrameState begin_impl_frame_state_ = BeginImplFrameState::IDLE;
BeginMainFrameState begin_main_frame_state_ = BEGIN_MAIN_FRAME_STATE_IDLE; BeginMainFrameState begin_main_frame_state_ = BeginMainFrameState::IDLE;
ForcedRedrawOnTimeoutState forced_redraw_state_ = FORCED_REDRAW_STATE_IDLE; ForcedRedrawOnTimeoutState forced_redraw_state_ =
ForcedRedrawOnTimeoutState::IDLE;
// These are used for tracing only. // These are used for tracing only.
int commit_count_ = 0; int commit_count_ = 0;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment