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 "ui/gfx/display.h" | 5 #include "ui/gfx/display.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "ui/gfx/geometry/insets.h" | 13 #include "ui/gfx/geometry/insets.h" |
14 #include "ui/gfx/geometry/point_conversions.h" | 14 #include "ui/gfx/geometry/point_conversions.h" |
15 #include "ui/gfx/geometry/point_f.h" | 15 #include "ui/gfx/geometry/point_f.h" |
16 #include "ui/gfx/geometry/size_conversions.h" | 16 #include "ui/gfx/geometry/size_conversions.h" |
17 #include "ui/gfx/switches.h" | 17 #include "ui/gfx/switches.h" |
18 | 18 |
19 namespace gfx { | 19 namespace gfx { |
20 namespace { | 20 namespace { |
21 | 21 |
| 22 // This variable tracks whether the forced device scale factor switch needs to |
| 23 // be read from the command line, i.e. if it is set to -1 then the command line |
| 24 // is checked. |
| 25 int g_has_forced_device_scale_factor = -1; |
| 26 |
| 27 // This variable caches the forced device scale factor value which is read off |
| 28 // the command line. If the cache is invalidated by setting this variable to |
| 29 // -1.0, we read the forced device scale factor again. |
| 30 float g_forced_device_scale_factor = -1.0; |
| 31 |
22 bool HasForceDeviceScaleFactorImpl() { | 32 bool HasForceDeviceScaleFactorImpl() { |
23 return base::CommandLine::ForCurrentProcess()->HasSwitch( | 33 return base::CommandLine::ForCurrentProcess()->HasSwitch( |
24 switches::kForceDeviceScaleFactor); | 34 switches::kForceDeviceScaleFactor); |
25 } | 35 } |
26 | 36 |
27 float GetForcedDeviceScaleFactorImpl() { | 37 float GetForcedDeviceScaleFactorImpl() { |
28 double scale_in_double = 1.0; | 38 double scale_in_double = 1.0; |
29 if (HasForceDeviceScaleFactorImpl()) { | 39 if (HasForceDeviceScaleFactorImpl()) { |
30 std::string value = | 40 std::string value = |
31 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( | 41 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
32 switches::kForceDeviceScaleFactor); | 42 switches::kForceDeviceScaleFactor); |
33 if (!base::StringToDouble(value, &scale_in_double)) | 43 if (!base::StringToDouble(value, &scale_in_double)) |
34 LOG(ERROR) << "Failed to parse the default device scale factor:" << value; | 44 LOG(ERROR) << "Failed to parse the default device scale factor:" << value; |
35 } | 45 } |
36 return static_cast<float>(scale_in_double); | 46 return static_cast<float>(scale_in_double); |
37 } | 47 } |
38 | 48 |
39 int64 internal_display_id_ = -1; | 49 int64 internal_display_id_ = -1; |
40 | 50 |
41 } // namespace | 51 } // namespace |
42 | 52 |
43 const int64 Display::kInvalidDisplayID = -1; | 53 const int64 Display::kInvalidDisplayID = -1; |
44 | 54 |
45 // static | 55 // static |
46 float Display::GetForcedDeviceScaleFactor() { | 56 float Display::GetForcedDeviceScaleFactor() { |
47 static const float kForcedDeviceScaleFactor = | 57 if (g_forced_device_scale_factor < 0) |
48 GetForcedDeviceScaleFactorImpl(); | 58 g_forced_device_scale_factor = GetForcedDeviceScaleFactorImpl(); |
49 return kForcedDeviceScaleFactor; | 59 return g_forced_device_scale_factor; |
50 } | 60 } |
51 | 61 |
52 //static | 62 //static |
53 bool Display::HasForceDeviceScaleFactor() { | 63 bool Display::HasForceDeviceScaleFactor() { |
54 static const bool kHasForceDeviceScaleFactor = | 64 if (g_has_forced_device_scale_factor == -1) |
55 HasForceDeviceScaleFactorImpl(); | 65 g_has_forced_device_scale_factor = HasForceDeviceScaleFactorImpl(); |
56 return kHasForceDeviceScaleFactor; | 66 return !!g_has_forced_device_scale_factor; |
| 67 } |
| 68 |
| 69 // static |
| 70 void Display::ResetForceDeviceScaleFactorForTesting() { |
| 71 g_has_forced_device_scale_factor = -1; |
| 72 g_forced_device_scale_factor = -1.0; |
57 } | 73 } |
58 | 74 |
59 Display::Display() | 75 Display::Display() |
60 : id_(kInvalidDisplayID), | 76 : id_(kInvalidDisplayID), |
61 device_scale_factor_(GetForcedDeviceScaleFactor()), | 77 device_scale_factor_(GetForcedDeviceScaleFactor()), |
62 rotation_(ROTATE_0), | 78 rotation_(ROTATE_0), |
63 touch_support_(TOUCH_SUPPORT_UNKNOWN) { | 79 touch_support_(TOUCH_SUPPORT_UNKNOWN) { |
64 } | 80 } |
65 | 81 |
66 Display::Display(int64 id) | 82 Display::Display(int64 id) |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 200 |
185 int64 Display::InternalDisplayId() { | 201 int64 Display::InternalDisplayId() { |
186 return internal_display_id_; | 202 return internal_display_id_; |
187 } | 203 } |
188 | 204 |
189 void Display::SetInternalDisplayId(int64 internal_display_id) { | 205 void Display::SetInternalDisplayId(int64 internal_display_id) { |
190 internal_display_id_ = internal_display_id; | 206 internal_display_id_ = internal_display_id; |
191 } | 207 } |
192 | 208 |
193 } // namespace gfx | 209 } // namespace gfx |
OLD | NEW |