Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/bind.h" | |
| 6 #include "base/location.h" | |
| 7 #include "base/thread_task_runner_handle.h" | |
| 8 #include "services/native_viewport/ozone/display_manager.h" | |
| 9 #include "ui/display/types/display_snapshot.h" | |
| 10 #include "ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h" | |
| 11 #include "ui/ozone/platform/drm/host/drm_window_host.h" | |
| 12 #include "ui/ozone/public/ozone_platform.h" | |
| 13 | |
| 14 namespace native_viewport { | |
| 15 | |
| 16 DisplayManager::DisplayManager() | |
| 17 : delegate_(ui::OzonePlatform::GetInstance() | |
| 18 ->CreateNativeDisplayDelegate()) { | |
| 19 delegate_->AddObserver(this); | |
| 20 delegate_->Initialize(); | |
| 21 OnConfigurationChanged(); | |
| 22 } | |
| 23 | |
| 24 DisplayManager::~DisplayManager() { | |
| 25 if (delegate_) | |
| 26 delegate_->RemoveObserver(this); | |
|
jamesr
2015/08/25 00:30:28
does this ensure that |delegate_| won't try to cal
cdotstout
2015/08/27 19:10:21
It ensures that OnConfigurationChanged won't be ca
| |
| 27 } | |
| 28 | |
| 29 void DisplayManager::OnConfigurationChanged() { | |
| 30 if (is_configuring_) { | |
| 31 should_configure_ = true; | |
| 32 return; | |
| 33 } | |
| 34 | |
| 35 is_configuring_ = true; | |
| 36 delegate_->GrabServer(); | |
| 37 delegate_->GetDisplays( | |
| 38 base::Bind(&DisplayManager::OnDisplaysAquired, base::Unretained(this))); | |
| 39 } | |
| 40 | |
| 41 void DisplayManager::OnDisplaysAquired( | |
|
jamesr
2015/08/25 00:30:28
nit: i think it's spelled 'acquired'
cdotstout
2015/08/27 19:10:21
Done.
| |
| 42 const std::vector<ui::DisplaySnapshot*>& displays) { | |
| 43 gfx::Point origin; | |
| 44 for (auto display : displays) { | |
| 45 if (!display->native_mode()) { | |
| 46 LOG(ERROR) << "Display " << display->display_id() | |
| 47 << " doesn't have a native mode"; | |
| 48 continue; | |
| 49 } | |
| 50 | |
| 51 delegate_->Configure( | |
| 52 *display, display->native_mode(), origin, | |
| 53 base::Bind(&DisplayManager::OnDisplayConfigured, base::Unretained(this), | |
| 54 gfx::Rect(origin, display->native_mode()->size()))); | |
| 55 origin.Offset(display->native_mode()->size().width(), 0); | |
| 56 } | |
| 57 delegate_->UngrabServer(); | |
| 58 is_configuring_ = false; | |
| 59 | |
| 60 if (should_configure_) { | |
| 61 should_configure_ = false; | |
| 62 base::ThreadTaskRunnerHandle::Get()->PostTask( | |
| 63 FROM_HERE, base::Bind(&DisplayManager::OnConfigurationChanged, | |
| 64 base::Unretained(this))); | |
| 65 } | |
| 66 } | |
| 67 | |
| 68 void DisplayManager::OnDisplayConfigured(const gfx::Rect& bounds, | |
| 69 bool success) { | |
| 70 auto platform_support_host = static_cast<ui::DrmGpuPlatformSupportHost*>( | |
| 71 ui::OzonePlatform::GetInstance()->GetGpuPlatformSupportHost()); | |
| 72 platform_support_host->get_window_manager()->GetPrimaryWindow()->SetBounds( | |
| 73 bounds); | |
| 74 } | |
| 75 | |
| 76 } // namespace | |
|
jamesr
2015/08/25 00:30:28
ditto
cdotstout
2015/08/27 19:10:21
Done.
| |
| OLD | NEW |