Index: chromecast/graphics/cast_screen.cc |
diff --git a/chromecast/graphics/cast_screen.cc b/chromecast/graphics/cast_screen.cc |
index b88d75a61c2a643d14b0663b696d2454102861a2..a31ebb208dca8ba4a2fe7b2da95cd25018121223 100644 |
--- a/chromecast/graphics/cast_screen.cc |
+++ b/chromecast/graphics/cast_screen.cc |
@@ -6,9 +6,12 @@ |
#include <stdint.h> |
+#include "base/command_line.h" |
+#include "chromecast/public/graphics_properties_shlib.h" |
#include "ui/aura/env.h" |
#include "ui/display/screen.h" |
#include "ui/gfx/geometry/rect_conversions.h" |
+#include "ui/gfx/geometry/size.h" |
#include "ui/gfx/geometry/size_conversions.h" |
#include "ui/gfx/native_widget_types.h" |
@@ -18,32 +21,23 @@ namespace { |
const int64_t kDisplayId = 1; |
-const int k720pWidth = 1280; |
-const int k720pHeight = 720; |
- |
-// When CastScreen is first initialized, we may not have any display info |
-// available. These constants hold the initial size that we default to, and |
-// the size can be updated when we have actual display info at hand with |
-// UpdateDisplaySize(). |
-const int kInitDisplayWidth = k720pWidth; |
-const int kInitDisplayHeight = k720pHeight; |
+// Helper to return the screen resolution (device pixels) |
+// to use. |
+gfx::Size GetScreenResolution() { |
+ if (GraphicsPropertiesShlib::IsSupported( |
+ GraphicsPropertiesShlib::k1080p, |
+ base::CommandLine::ForCurrentProcess()->argv())) { |
+ return gfx::Size(1920, 1080); |
+ } else { |
+ return gfx::Size(1280, 720); |
+ } |
+} |
} // namespace |
CastScreen::~CastScreen() { |
} |
-void CastScreen::SetDisplayResizeCallback(const DisplayResizeCallback& cb) { |
- DCHECK(!cb.is_null()); |
- display_resize_cb_ = cb; |
-} |
- |
-void CastScreen::UpdateDisplaySize(const gfx::Size& size) { |
- display_.SetScaleAndBounds(1.0f, gfx::Rect(size)); |
- if (!display_resize_cb_.is_null()) |
- display_resize_cb_.Run(Size(size.width(), size.height())); |
-} |
- |
gfx::Point CastScreen::GetCursorScreenPoint() { |
return aura::Env::GetInstance()->last_mouse_location(); |
} |
@@ -89,8 +83,10 @@ void CastScreen::AddObserver(display::DisplayObserver* observer) {} |
void CastScreen::RemoveObserver(display::DisplayObserver* observer) {} |
CastScreen::CastScreen() : display_(kDisplayId) { |
- display_.SetScaleAndBounds(1.0f, |
- gfx::Rect(kInitDisplayWidth, kInitDisplayHeight)); |
+ // Device scale factor computed relative to 720p display |
+ const gfx::Size size = GetScreenResolution(); |
+ const float device_scale_factor = size.height() / 720.0f; |
+ display_.SetScaleAndBounds(device_scale_factor, gfx::Rect(size)); |
} |
} // namespace chromecast |