Index: ash/display/display_configuration_controller.cc |
diff --git a/ash/display/display_configuration_controller.cc b/ash/display/display_configuration_controller.cc |
index 29cd68edca1826eb438ec3e3dc3e97f7291f5258..54c43a7f398206e2fe421fe604d60e7603004978 100644 |
--- a/ash/display/display_configuration_controller.cc |
+++ b/ash/display/display_configuration_controller.cc |
@@ -31,6 +31,14 @@ const int64_t kSetPrimaryDisplayThrottleTimeoutMs = 500; |
namespace ash { |
+namespace { |
+ |
+bool CanAnimate(ScreenRotationAnimator* animator) { |
+ return animator && animator->CanAnimate(); |
+} |
+ |
+} // namespace |
+ |
class DisplayConfigurationController::DisplayChangeLimiter { |
public: |
DisplayChangeLimiter() : throttle_timeout_(base::Time::Now()) {} |
@@ -104,12 +112,13 @@ void DisplayConfigurationController::SetDisplayRotation( |
rotation) |
return; |
+ ScreenRotationAnimator* screen_rotation_animator = nullptr; |
if (display_manager_->IsDisplayIdValid(display_id)) { |
- ScreenRotationAnimator* screen_rotation_animator = |
- GetScreenRotationAnimatorForDisplay(display_id); |
+ screen_rotation_animator = GetScreenRotationAnimatorForDisplay(display_id); |
+ } |
+ if (CanAnimate(screen_rotation_animator)) { |
screen_rotation_animator->Rotate(rotation, source); |
} else { |
- DCHECK(!rotation_animator_map_.count(display_id)); |
display_manager_->SetDisplayRotation(display_id, rotation, source); |
} |
} |