Index: cc/scheduler/scheduler_state_machine.cc |
diff --git a/cc/scheduler/scheduler_state_machine.cc b/cc/scheduler/scheduler_state_machine.cc |
index 01252dd7aff1c21a0330eb5c9598a567658a6eb1..9ad542581a65968bd77447529ed2ae45b8112a31 100644 |
--- a/cc/scheduler/scheduler_state_machine.cc |
+++ b/cc/scheduler/scheduler_state_machine.cc |
@@ -430,7 +430,14 @@ void SchedulerStateMachine::SetHasPendingTree(bool has_pending_tree) { |
void SchedulerStateMachine::SetCanDraw(bool can) { can_draw_ = can; } |
void SchedulerStateMachine::DidCreateAndInitializeOutputSurface() { |
- DCHECK_EQ(output_surface_state_, OUTPUT_SURFACE_CREATING); |
+ DCHECK(output_surface_state_ == OUTPUT_SURFACE_CREATING || |
+ output_surface_state_ == OUTPUT_SURFACE_ACTIVE); |
+ |
+ // This can be called from LayerTreeHostImpl::DeferredInitialize while an |
+ // output surface is already active. |
+ if (output_surface_state_ == OUTPUT_SURFACE_ACTIVE) |
+ return; |
+ |
output_surface_state_ = OUTPUT_SURFACE_ACTIVE; |
if (did_create_and_initialize_first_output_surface_) { |