提交 a3151b6a 编写于 作者: S Simon Fels

Calculate display bounds for all available displays

The hwcomposer module for Android doesn't support multi-monitor well
enough for our use case yet so we give Android a large enough primary
display. This may have negative effects performance wise for the until
we disabled all non freeform stack and wallpaper related rendering on
the Android side so that only visible windows are drawn to not waste
any GPU cycles on things we don't render anyway.
上级 009cbb34
......@@ -39,16 +39,26 @@ PlatformPolicy::PlatformPolicy(
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) < 0)
BOOST_THROW_EXCEPTION(std::runtime_error("Failed to initialize SDL"));
event_thread_ = std::thread(&PlatformPolicy::process_events, this);
auto display_frame = graphics::Rect::Invalid;
for (auto n = 0; n < SDL_GetNumVideoDisplays(); n++) {
SDL_Rect r;
if (SDL_GetDisplayBounds(n, &r) != 0)
continue;
graphics::Rect frame{r.x, r.y, r.x + r.w, r.y + r.h};
SDL_DisplayMode display_mode;
// FIXME statically just check the first (primary) display for its mode;
// once we get multi-monitor support we need to do this better.
if (SDL_GetCurrentDisplayMode(0, &display_mode) == 0) {
display_info_.horizontal_resolution = display_mode.w;
display_info_.vertical_resolution = display_mode.h;
if (display_frame == graphics::Rect::Invalid)
display_frame = frame;
else
display_frame.merge(frame);
}
if (display_frame == graphics::Rect::Invalid)
BOOST_THROW_EXCEPTION(std::runtime_error("No valid display configuration found"));
display_info_.horizontal_resolution = display_frame.width();
display_info_.vertical_resolution = display_frame.height();
pointer_ = input_manager->create_device();
pointer_->set_name("anbox-pointer");
pointer_->set_driver_version(1);
......@@ -70,6 +80,8 @@ PlatformPolicy::PlatformPolicy(
keyboard_->set_physical_location("none");
keyboard_->set_key_bit(BTN_MISC);
keyboard_->set_key_bit(KEY_OK);
event_thread_ = std::thread(&PlatformPolicy::process_events, this);
}
PlatformPolicy::~PlatformPolicy() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册