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

Side by Side Diff: ash/display/display_configuration_controller.cc

Issue 2837773003: Flip the flag to enable smooth screen rotation by default. (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ash/display/display_configuration_controller.h" 5 #include "ash/display/display_configuration_controller.h"
6 6
7 #include "ash/display/display_animator.h" 7 #include "ash/display/display_animator.h"
8 #include "ash/display/display_animator_chromeos.h" 8 #include "ash/display/display_animator_chromeos.h"
9 #include "ash/display/display_util.h" 9 #include "ash/display/display_util.h"
10 #include "ash/rotator/screen_rotation_animator.h" 10 #include "ash/rotator/screen_rotation_animator.h"
(...skipping 13 matching lines...) Expand all
24 // displays. It will be overriden by |kAfterDisplayChangeThrottleTimeoutMs| 24 // displays. It will be overriden by |kAfterDisplayChangeThrottleTimeoutMs|
25 // when the display change happens, so the actual timeout is much shorter. 25 // when the display change happens, so the actual timeout is much shorter.
26 const int64_t kAfterDisplayChangeThrottleTimeoutMs = 500; 26 const int64_t kAfterDisplayChangeThrottleTimeoutMs = 500;
27 const int64_t kCycleDisplayThrottleTimeoutMs = 4000; 27 const int64_t kCycleDisplayThrottleTimeoutMs = 4000;
28 const int64_t kSetPrimaryDisplayThrottleTimeoutMs = 500; 28 const int64_t kSetPrimaryDisplayThrottleTimeoutMs = 500;
29 29
30 } // namespace 30 } // namespace
31 31
32 namespace ash { 32 namespace ash {
33 33
34 namespace {
35
36 bool CanAnimate(ScreenRotationAnimator* animator) {
37 return animator && animator->CanAnimate();
38 }
39
40 } // namespace
41
34 class DisplayConfigurationController::DisplayChangeLimiter { 42 class DisplayConfigurationController::DisplayChangeLimiter {
35 public: 43 public:
36 DisplayChangeLimiter() : throttle_timeout_(base::Time::Now()) {} 44 DisplayChangeLimiter() : throttle_timeout_(base::Time::Now()) {}
37 45
38 void SetThrottleTimeout(int64_t throttle_ms) { 46 void SetThrottleTimeout(int64_t throttle_ms) {
39 throttle_timeout_ = 47 throttle_timeout_ =
40 base::Time::Now() + base::TimeDelta::FromMilliseconds(throttle_ms); 48 base::Time::Now() + base::TimeDelta::FromMilliseconds(throttle_ms);
41 } 49 }
42 50
43 bool IsThrottled() const { return base::Time::Now() < throttle_timeout_; } 51 bool IsThrottled() const { return base::Time::Now() < throttle_timeout_; }
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 } 105 }
98 106
99 void DisplayConfigurationController::SetDisplayRotation( 107 void DisplayConfigurationController::SetDisplayRotation(
100 int64_t display_id, 108 int64_t display_id,
101 display::Display::Rotation rotation, 109 display::Display::Rotation rotation,
102 display::Display::RotationSource source) { 110 display::Display::RotationSource source) {
103 if (display_manager_->GetDisplayInfo(display_id).GetActiveRotation() == 111 if (display_manager_->GetDisplayInfo(display_id).GetActiveRotation() ==
104 rotation) 112 rotation)
105 return; 113 return;
106 114
115 ScreenRotationAnimator* screen_rotation_animator = nullptr;
107 if (display_manager_->IsDisplayIdValid(display_id)) { 116 if (display_manager_->IsDisplayIdValid(display_id)) {
108 ScreenRotationAnimator* screen_rotation_animator = 117 screen_rotation_animator = GetScreenRotationAnimatorForDisplay(display_id);
109 GetScreenRotationAnimatorForDisplay(display_id); 118 }
119 if (CanAnimate(screen_rotation_animator)) {
110 screen_rotation_animator->Rotate(rotation, source); 120 screen_rotation_animator->Rotate(rotation, source);
111 } else { 121 } else {
112 DCHECK(!rotation_animator_map_.count(display_id));
113 display_manager_->SetDisplayRotation(display_id, rotation, source); 122 display_manager_->SetDisplayRotation(display_id, rotation, source);
114 } 123 }
115 } 124 }
116 125
117 void DisplayConfigurationController::SetPrimaryDisplayId(int64_t display_id) { 126 void DisplayConfigurationController::SetPrimaryDisplayId(int64_t display_id) {
118 if (display_manager_->GetNumDisplays() <= 1 || IsLimited()) 127 if (display_manager_->GetNumDisplays() <= 1 || IsLimited())
119 return; 128 return;
120 129
121 SetThrottleTimeout(kSetPrimaryDisplayThrottleTimeoutMs); 130 SetThrottleTimeout(kSetPrimaryDisplayThrottleTimeoutMs);
122 if (display_animator_) { 131 if (display_animator_) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 return iter->second.get(); 189 return iter->second.get();
181 190
182 auto animator = base::MakeUnique<ScreenRotationAnimator>(display_id); 191 auto animator = base::MakeUnique<ScreenRotationAnimator>(display_id);
183 ScreenRotationAnimator* result = animator.get(); 192 ScreenRotationAnimator* result = animator.get();
184 rotation_animator_map_.insert( 193 rotation_animator_map_.insert(
185 std::make_pair(display_id, std::move(animator))); 194 std::make_pair(display_id, std::move(animator)));
186 return result; 195 return result;
187 } 196 }
188 197
189 } // namespace ash 198 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698