| Index: services/ui/display/platform_screen_ozone.cc
|
| diff --git a/services/ui/display/platform_screen_ozone.cc b/services/ui/display/platform_screen_ozone.cc
|
| index 52aa4607f472b70d1244bc1d50212707476ce8d1..92c25ebec03938bc2654f014a6f95a5aa9dd066e 100644
|
| --- a/services/ui/display/platform_screen_ozone.cc
|
| +++ b/services/ui/display/platform_screen_ozone.cc
|
| @@ -35,6 +35,8 @@ std::unique_ptr<PlatformScreen> PlatformScreen::Create() {
|
| PlatformScreenOzone::PlatformScreenOzone() {}
|
|
|
| PlatformScreenOzone::~PlatformScreenOzone() {
|
| + // We are shutting down and don't want anymore changes to virtual displays.
|
| + virtual_display_controller_ = nullptr;
|
| display_configurator_.RemoveObserver(this);
|
| }
|
|
|
| @@ -46,24 +48,20 @@ void PlatformScreenOzone::Init(PlatformScreenDelegate* delegate) {
|
| DCHECK(delegate);
|
| delegate_ = delegate;
|
|
|
| + std::unique_ptr<ui::NativeDisplayDelegate> native_display_delegate =
|
| + ui::OzonePlatform::GetInstance()->CreateNativeDisplayDelegate();
|
| +
|
| + if (!base::SysInfo::IsRunningOnChromeOS()) {
|
| + virtual_display_controller_ =
|
| + native_display_delegate->GetVirtualDisplayController();
|
| + }
|
| +
|
| // We want display configuration to happen even off device to keep the control
|
| // flow similar.
|
| display_configurator_.set_configure_display(true);
|
| display_configurator_.AddObserver(this);
|
| - display_configurator_.Init(
|
| - ui::OzonePlatform::GetInstance()->CreateNativeDisplayDelegate(), false);
|
| -
|
| - if (base::SysInfo::IsRunningOnChromeOS()) {
|
| - display_configurator_.ForceInitialConfigure(kChromeOsBootColor);
|
| - } else {
|
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch("multi-display")) {
|
| - // This really doesn't work properly. Use at your own risk.
|
| - display_configurator_.AddVirtualDisplay(gfx::Size(800, 800));
|
| - display_configurator_.AddVirtualDisplay(gfx::Size(800, 800));
|
| - } else {
|
| - display_configurator_.AddVirtualDisplay(gfx::Size(1024, 768));
|
| - }
|
| - }
|
| + display_configurator_.Init(std::move(native_display_delegate), false);
|
| + display_configurator_.ForceInitialConfigure(kChromeOsBootColor);
|
| }
|
|
|
| int64_t PlatformScreenOzone::GetPrimaryDisplayId() const {
|
| @@ -71,14 +69,15 @@ int64_t PlatformScreenOzone::GetPrimaryDisplayId() const {
|
| }
|
|
|
| void PlatformScreenOzone::ToggleVirtualDisplay() {
|
| - if (base::SysInfo::IsRunningOnChromeOS())
|
| + if (!virtual_display_controller_)
|
| return;
|
|
|
| - // TODO(kylechar): Convert to use VirtualDisplayDelegate once landed.
|
| if (cached_displays_.size() == 1) {
|
| - display_configurator_.AddVirtualDisplay(cached_displays_[0].bounds.size());
|
| + virtual_display_controller_->AddVirtualDisplay(
|
| + cached_displays_[0].bounds.size());
|
| } else if (cached_displays_.size() > 1) {
|
| - display_configurator_.RemoveVirtualDisplay(cached_displays_.back().id);
|
| + virtual_display_controller_->RemoveVirtualDisplay(
|
| + cached_displays_.back().id);
|
| } else {
|
| NOTREACHED();
|
| }
|
|
|