| Index: ui/ozone/platform/dri/hardware_display_controller.cc
 | 
| diff --git a/ui/ozone/platform/dri/hardware_display_controller.cc b/ui/ozone/platform/dri/hardware_display_controller.cc
 | 
| index 342b4502885ee294b15e7a0c0de7b97ee0a4ec0c..4befd8fa80128740814f37ece9816ce97a8e59f1 100644
 | 
| --- a/ui/ozone/platform/dri/hardware_display_controller.cc
 | 
| +++ b/ui/ozone/platform/dri/hardware_display_controller.cc
 | 
| @@ -82,6 +82,7 @@ HardwareDisplayController::HardwareDisplayController(
 | 
|      DriWrapper* drm,
 | 
|      scoped_ptr<CrtcState> state)
 | 
|      : drm_(drm),
 | 
| +      is_disabled_(true),
 | 
|        time_of_last_flip_(0),
 | 
|        pending_page_flips_(0) {
 | 
|    crtc_states_.push_back(state.release());
 | 
| @@ -98,13 +99,16 @@ bool HardwareDisplayController::Modeset(const OverlayPlane& primary,
 | 
|    DCHECK(primary.buffer);
 | 
|    pending_page_flips_ = 0;
 | 
|    bool status = true;
 | 
| -  for (size_t i = 0; i < crtc_states_.size(); ++i)
 | 
| +  for (size_t i = 0; i < crtc_states_.size(); ++i) {
 | 
|      status &= ModesetCrtc(primary.buffer, mode, crtc_states_[i]);
 | 
| +    crtc_states_[i]->set_is_disabled(false);
 | 
| +  }
 | 
|  
 | 
|    // Since a subset of controllers may be actively using |primary|, just keep
 | 
|    // track of it.
 | 
|    current_planes_ = std::vector<OverlayPlane>(1, primary);
 | 
|    pending_planes_.clear();
 | 
| +  is_disabled_ = false;
 | 
|    mode_ = mode;
 | 
|    return status;
 | 
|  }
 | 
| @@ -129,6 +133,8 @@ void HardwareDisplayController::Disable() {
 | 
|      drm_->DisableCrtc(crtc_states_[i]->crtc());
 | 
|      crtc_states_[i]->set_is_disabled(true);
 | 
|    }
 | 
| +
 | 
| +  is_disabled_ = true;
 | 
|  }
 | 
|  
 | 
|  void HardwareDisplayController::QueueOverlayPlane(const OverlayPlane& plane) {
 | 
| @@ -139,13 +145,12 @@ bool HardwareDisplayController::SchedulePageFlip() {
 | 
|    DCHECK(!pending_planes_.empty());
 | 
|    DCHECK_EQ(0u, pending_page_flips_);
 | 
|  
 | 
| -  bool status = true;
 | 
| -  for (size_t i = 0; i < crtc_states_.size(); ++i) {
 | 
| -    if (crtc_states_[i]->is_disabled())
 | 
| -      continue;
 | 
| +  if (is_disabled_)
 | 
| +    return true;
 | 
|  
 | 
| +  bool status = true;
 | 
| +  for (size_t i = 0; i < crtc_states_.size(); ++i)
 | 
|      status &= SchedulePageFlipOnCrtc(pending_planes_, crtc_states_[i]);
 | 
| -  }
 | 
|  
 | 
|    return status;
 | 
|  }
 | 
| @@ -186,11 +191,13 @@ void HardwareDisplayController::OnPageFlipEvent(unsigned int frame,
 | 
|  bool HardwareDisplayController::SetCursor(scoped_refptr<ScanoutBuffer> buffer) {
 | 
|    bool status = true;
 | 
|    cursor_buffer_ = buffer;
 | 
| +
 | 
| +  if (is_disabled_)
 | 
| +    return true;
 | 
| +
 | 
|    for (size_t i = 0; i < crtc_states_.size(); ++i) {
 | 
| -    if (!crtc_states_[i]->is_disabled())
 | 
| -      status &= drm_->SetCursor(crtc_states_[i]->crtc(),
 | 
| -                                buffer->GetHandle(),
 | 
| -                                buffer->GetSize());
 | 
| +    status &= drm_->SetCursor(
 | 
| +        crtc_states_[i]->crtc(), buffer->GetHandle(), buffer->GetSize());
 | 
|    }
 | 
|  
 | 
|    return status;
 | 
| @@ -206,10 +213,12 @@ bool HardwareDisplayController::UnsetCursor() {
 | 
|  }
 | 
|  
 | 
|  bool HardwareDisplayController::MoveCursor(const gfx::Point& location) {
 | 
| +  if (is_disabled_)
 | 
| +    return true;
 | 
| +
 | 
|    bool status = true;
 | 
|    for (size_t i = 0; i < crtc_states_.size(); ++i)
 | 
| -    if (!crtc_states_[i]->is_disabled())
 | 
| -      status &= drm_->MoveCursor(crtc_states_[i]->crtc(), location);
 | 
| +    status &= drm_->MoveCursor(crtc_states_[i]->crtc(), location);
 | 
|  
 | 
|    return status;
 | 
|  }
 | 
| @@ -241,13 +250,12 @@ bool HardwareDisplayController::HasCrtc(uint32_t crtc) const {
 | 
|    return false;
 | 
|  }
 | 
|  
 | 
| -bool HardwareDisplayController::HasCrtcs() const {
 | 
| -  return !crtc_states_.empty();
 | 
| +bool HardwareDisplayController::IsMirrored() const {
 | 
| +  return crtc_states_.size() > 1;
 | 
|  }
 | 
|  
 | 
| -void HardwareDisplayController::RemoveMirroredCrtcs() {
 | 
| -  if (crtc_states_.size() > 1)
 | 
| -    crtc_states_.erase(crtc_states_.begin() + 1, crtc_states_.end());
 | 
| +bool HardwareDisplayController::IsDisabled() const {
 | 
| +  return is_disabled_;
 | 
|  }
 | 
|  
 | 
|  bool HardwareDisplayController::ModesetCrtc(
 | 
| @@ -267,7 +275,6 @@ bool HardwareDisplayController::ModesetCrtc(
 | 
|      return false;
 | 
|    }
 | 
|  
 | 
| -  state->set_is_disabled(false);
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| 
 |