OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "ui/display/chromeos/display_configurator.h" | 5 #include "ui/display/chromeos/display_configurator.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_number_conversions.h" | |
11 #include "base/strings/stringprintf.h" | |
12 #include "base/sys_info.h" | 10 #include "base/sys_info.h" |
13 #include "base/time/time.h" | 11 #include "base/time/time.h" |
| 12 #include "ui/display/chromeos/display_util.h" |
14 #include "ui/display/display_switches.h" | 13 #include "ui/display/display_switches.h" |
15 #include "ui/display/types/display_mode.h" | 14 #include "ui/display/types/display_mode.h" |
16 #include "ui/display/types/display_snapshot.h" | 15 #include "ui/display/types/display_snapshot.h" |
17 #include "ui/display/types/native_display_delegate.h" | 16 #include "ui/display/types/native_display_delegate.h" |
18 | 17 |
19 namespace ui { | 18 namespace ui { |
20 | 19 |
21 namespace { | 20 namespace { |
22 | 21 |
23 typedef std::vector<const DisplayMode*> DisplayModeList; | 22 typedef std::vector<const DisplayMode*> DisplayModeList; |
24 | 23 |
25 // The delay to perform configuration after RRNotify. See the comment for | 24 // The delay to perform configuration after RRNotify. See the comment for |
26 // |configure_timer_|. | 25 // |configure_timer_|. |
27 const int kConfigureDelayMs = 500; | 26 const int kConfigureDelayMs = 500; |
28 | 27 |
29 // The delay spent before reading the display configuration after coming out of | 28 // The delay spent before reading the display configuration after coming out of |
30 // suspend. While coming out of suspend the display state may be updating. This | 29 // suspend. While coming out of suspend the display state may be updating. This |
31 // is used to wait until the hardware had a chance to update the display state | 30 // is used to wait until the hardware had a chance to update the display state |
32 // such that we read an up to date state. | 31 // such that we read an up to date state. |
33 const int kResumeDelayMs = 500; | 32 const int kResumeDelayMs = 500; |
34 | 33 |
35 // Returns a string describing |state|. | |
36 std::string DisplayPowerStateToString(chromeos::DisplayPowerState state) { | |
37 switch (state) { | |
38 case chromeos::DISPLAY_POWER_ALL_ON: | |
39 return "ALL_ON"; | |
40 case chromeos::DISPLAY_POWER_ALL_OFF: | |
41 return "ALL_OFF"; | |
42 case chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON: | |
43 return "INTERNAL_OFF_EXTERNAL_ON"; | |
44 case chromeos::DISPLAY_POWER_INTERNAL_ON_EXTERNAL_OFF: | |
45 return "INTERNAL_ON_EXTERNAL_OFF"; | |
46 default: | |
47 return "unknown (" + base::IntToString(state) + ")"; | |
48 } | |
49 } | |
50 | |
51 // Returns a string describing |state|. | |
52 std::string DisplayStateToString(MultipleDisplayState state) { | |
53 switch (state) { | |
54 case MULTIPLE_DISPLAY_STATE_INVALID: | |
55 return "INVALID"; | |
56 case MULTIPLE_DISPLAY_STATE_HEADLESS: | |
57 return "HEADLESS"; | |
58 case MULTIPLE_DISPLAY_STATE_SINGLE: | |
59 return "SINGLE"; | |
60 case MULTIPLE_DISPLAY_STATE_DUAL_MIRROR: | |
61 return "DUAL_MIRROR"; | |
62 case MULTIPLE_DISPLAY_STATE_DUAL_EXTENDED: | |
63 return "DUAL_EXTENDED"; | |
64 case MULTIPLE_DISPLAY_STATE_MULTI_EXTENDED: | |
65 return "MULTI_EXTENDED"; | |
66 } | |
67 NOTREACHED() << "Unknown state " << state; | |
68 return "INVALID"; | |
69 } | |
70 | |
71 // Returns the number of displays in |displays| that should be turned on, per | |
72 // |state|. If |display_power| is non-NULL, it is updated to contain the | |
73 // on/off state of each corresponding entry in |displays|. | |
74 int GetDisplayPower( | |
75 const std::vector<DisplayConfigurator::DisplayState>& display_states, | |
76 chromeos::DisplayPowerState state, | |
77 std::vector<bool>* display_power) { | |
78 int num_on_displays = 0; | |
79 if (display_power) | |
80 display_power->resize(display_states.size()); | |
81 | |
82 for (size_t i = 0; i < display_states.size(); ++i) { | |
83 bool internal = | |
84 display_states[i].display->type() == DISPLAY_CONNECTION_TYPE_INTERNAL; | |
85 bool on = | |
86 state == chromeos::DISPLAY_POWER_ALL_ON || | |
87 (state == chromeos::DISPLAY_POWER_INTERNAL_OFF_EXTERNAL_ON && | |
88 !internal) || | |
89 (state == chromeos::DISPLAY_POWER_INTERNAL_ON_EXTERNAL_OFF && internal); | |
90 if (display_power) | |
91 (*display_power)[i] = on; | |
92 if (on) | |
93 num_on_displays++; | |
94 } | |
95 return num_on_displays; | |
96 } | |
97 | |
98 } // namespace | 34 } // namespace |
99 | 35 |
100 | 36 |
101 const int DisplayConfigurator::kSetDisplayPowerNoFlags = 0; | 37 const int DisplayConfigurator::kSetDisplayPowerNoFlags = 0; |
102 const int DisplayConfigurator::kSetDisplayPowerForceProbe = 1 << 0; | 38 const int DisplayConfigurator::kSetDisplayPowerForceProbe = 1 << 0; |
103 const int | 39 const int |
104 DisplayConfigurator::kSetDisplayPowerOnlyIfSingleInternalDisplay = 1 << 1; | 40 DisplayConfigurator::kSetDisplayPowerOnlyIfSingleInternalDisplay = 1 << 1; |
105 | 41 |
106 DisplayConfigurator::DisplayState::DisplayState() | 42 DisplayConfigurator::DisplayState::DisplayState() |
107 : display(NULL), | 43 : display(NULL), |
(...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 | 943 |
1008 return state_controller_->GetStateForDisplayIds(display_ids); | 944 return state_controller_->GetStateForDisplayIds(display_ids); |
1009 } | 945 } |
1010 NOTREACHED(); | 946 NOTREACHED(); |
1011 } | 947 } |
1012 } | 948 } |
1013 return MULTIPLE_DISPLAY_STATE_INVALID; | 949 return MULTIPLE_DISPLAY_STATE_INVALID; |
1014 } | 950 } |
1015 | 951 |
1016 } // namespace ui | 952 } // namespace ui |
OLD | NEW |