OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/display/display_preferences.h" | 5 #include "chrome/browser/chromeos/display/display_preferences.h" |
6 | 6 |
7 #include "ash/display/display_controller.h" | 7 #include "ash/display/display_controller.h" |
8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 ash::DisplayController* display_controller = GetDisplayController(); | 173 ash::DisplayController* display_controller = GetDisplayController(); |
174 ash::DisplayLayout display_layout = | 174 ash::DisplayLayout display_layout = |
175 display_controller->GetCurrentDisplayLayout(); | 175 display_controller->GetCurrentDisplayLayout(); |
176 ash::DisplayIdPair pair = display_controller->GetCurrentDisplayIdPair(); | 176 ash::DisplayIdPair pair = display_controller->GetCurrentDisplayIdPair(); |
177 | 177 |
178 StoreDisplayLayoutPref(pair.first, pair.second, display_layout); | 178 StoreDisplayLayoutPref(pair.first, pair.second, display_layout); |
179 } | 179 } |
180 | 180 |
181 | 181 |
182 void StorePrimaryDisplayIDPref(int64 display_id) { | 182 void StorePrimaryDisplayIDPref(int64 display_id) { |
183 if (!IsValidUser()) | 183 if (!IsValidUser() || gfx::Screen::GetNativeScreen()->GetNumDisplays() < 2) |
184 return; | 184 return; |
185 | 185 |
186 PrefService* local_state = g_browser_process->local_state(); | 186 PrefService* local_state = g_browser_process->local_state(); |
187 if (GetDisplayManager()->IsInternalDisplayId(display_id)) | 187 if (GetDisplayManager()->IsInternalDisplayId(display_id)) |
188 local_state->ClearPref(prefs::kPrimaryDisplayID); | 188 local_state->ClearPref(prefs::kPrimaryDisplayID); |
189 else | 189 else |
190 local_state->SetInt64(prefs::kPrimaryDisplayID, display_id); | 190 local_state->SetInt64(prefs::kPrimaryDisplayID, display_id); |
191 } | 191 } |
192 | 192 |
193 } // namespace | 193 } // namespace |
(...skipping 10 matching lines...) Expand all Loading... |
204 | 204 |
205 // Primary output name. | 205 // Primary output name. |
206 registry->RegisterInt64Pref(prefs::kPrimaryDisplayID, | 206 registry->RegisterInt64Pref(prefs::kPrimaryDisplayID, |
207 gfx::Display::kInvalidDisplayID); | 207 gfx::Display::kInvalidDisplayID); |
208 | 208 |
209 // Display overscan preference. | 209 // Display overscan preference. |
210 registry->RegisterDictionaryPref(prefs::kDisplayOverscans); | 210 registry->RegisterDictionaryPref(prefs::kDisplayOverscans); |
211 } | 211 } |
212 | 212 |
213 void StoreDisplayPrefs() { | 213 void StoreDisplayPrefs() { |
214 StorePrimaryDisplayIDPref(ash::Shell::GetScreen()->GetPrimaryDisplay().id()); | 214 if (!IsValidUser()) |
215 StoreCurrentDisplayLayoutPrefs(); | 215 return; |
| 216 if (gfx::Screen::GetNativeScreen()->GetNumDisplays() == 2) { |
| 217 StorePrimaryDisplayIDPref( |
| 218 ash::Shell::GetScreen()->GetPrimaryDisplay().id()); |
| 219 StoreCurrentDisplayLayoutPrefs(); |
| 220 } |
216 } | 221 } |
217 | 222 |
218 void SetAndStoreDisplayLayoutPref(int layout, int offset) { | 223 void SetAndStoreDisplayLayoutPref(int layout, int offset) { |
219 ash::DisplayLayout display_layout( | 224 ash::DisplayLayout display_layout( |
220 static_cast<ash::DisplayLayout::Position>(layout), offset); | 225 static_cast<ash::DisplayLayout::Position>(layout), offset); |
221 ash::Shell::GetInstance()->display_controller()-> | 226 ash::Shell::GetInstance()->display_controller()-> |
222 SetLayoutForCurrentDisplays(display_layout); | 227 SetLayoutForCurrentDisplays(display_layout); |
223 StoreCurrentDisplayLayoutPrefs(); | 228 StoreCurrentDisplayLayoutPrefs(); |
224 } | 229 } |
225 | 230 |
(...skipping 29 matching lines...) Expand all Loading... |
255 | 260 |
256 void NotifyDisplayLocalStatePrefChanged() { | 261 void NotifyDisplayLocalStatePrefChanged() { |
257 PrefService* local_state = g_browser_process->local_state(); | 262 PrefService* local_state = g_browser_process->local_state(); |
258 ash::Shell::GetInstance()->display_controller()->SetPrimaryDisplayId( | 263 ash::Shell::GetInstance()->display_controller()->SetPrimaryDisplayId( |
259 local_state->GetInt64(prefs::kPrimaryDisplayID)); | 264 local_state->GetInt64(prefs::kPrimaryDisplayID)); |
260 NotifyDisplayLayoutChanged(); | 265 NotifyDisplayLayoutChanged(); |
261 NotifyDisplayOverscans(); | 266 NotifyDisplayOverscans(); |
262 } | 267 } |
263 | 268 |
264 } // namespace chromeos | 269 } // namespace chromeos |
OLD | NEW |