@@ -181,32 +181,34 @@ bool UpdateDisplayConfigurationTask::ShouldConfigure() const {
181
181
182
182
MultipleDisplayState UpdateDisplayConfigurationTask::ChooseDisplayState ()
183
183
const {
184
+ int num_displays = cached_displays_.size ();
184
185
int num_on_displays =
185
- GetDisplayPower (cached_displays_, new_power_state_, NULL );
186
- switch (cached_displays_.size ()) {
187
- case 0 :
188
- return MULTIPLE_DISPLAY_STATE_HEADLESS;
189
- case 1 :
190
- return MULTIPLE_DISPLAY_STATE_SINGLE;
191
- default : {
192
- if (num_on_displays == 1 ) {
193
- // If only one display is currently turned on, return the "single"
194
- // state so that its native mode will be used.
195
- return MULTIPLE_DISPLAY_STATE_SINGLE;
196
- }
197
- if (num_on_displays >= 3 ) {
198
- return MULTIPLE_DISPLAY_STATE_MULTI_EXTENDED;
199
- } else if (cached_displays_.size () == 2 ) {
200
- if (!layout_manager_->GetStateController ())
201
- return MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED;
202
- // With either both displays on or both displays off, use one of the
203
- // dual modes.
204
- return layout_manager_->GetStateController ()->GetStateForDisplayIds (
205
- cached_displays_);
206
- }
207
- NOTREACHED ();
208
- }
186
+ GetDisplayPower (cached_displays_, new_power_state_, nullptr );
187
+
188
+ if (num_displays == 0 )
189
+ return MULTIPLE_DISPLAY_STATE_HEADLESS;
190
+
191
+ if (num_displays == 1 || num_on_displays == 1 ) {
192
+ // If only one display is currently turned on, return the "single" state
193
+ // so that its native mode will be used.
194
+ return MULTIPLE_DISPLAY_STATE_SINGLE;
209
195
}
196
+
197
+ if (num_displays == 2 || num_on_displays == 2 ) {
198
+ // Try to use the saved configuration; otherwise, default to extended.
199
+ DisplayConfigurator::StateController* state_controller =
200
+ layout_manager_->GetStateController ();
201
+
202
+ if (!state_controller)
203
+ return MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED;
204
+ return state_controller->GetStateForDisplayIds (cached_displays_);
205
+ }
206
+
207
+ if (num_on_displays >= 3 ) {
208
+ // 3+ displays are always extended
209
+ return MULTIPLE_DISPLAY_STATE_MULTI_EXTENDED;
210
+ }
211
+
210
212
return MULTIPLE_DISPLAY_STATE_INVALID;
211
213
}
212
214
0 commit comments