Chromium Code Reviews| Index: ui/ozone/platform/drm/mus_thread_proxy.cc |
| diff --git a/ui/ozone/platform/drm/mus_thread_proxy.cc b/ui/ozone/platform/drm/mus_thread_proxy.cc |
| index a28e9009aac46dedfaf7b02b4f121566672c6d71..c1fb801a1a0717149732e65a8855b4aacb4df0cc 100644 |
| --- a/ui/ozone/platform/drm/mus_thread_proxy.cc |
| +++ b/ui/ozone/platform/drm/mus_thread_proxy.cc |
| @@ -59,6 +59,7 @@ void MusThreadProxy::ProvideManagers(DrmDisplayHostManager* display_manager, |
| overlay_manager_ = overlay_manager; |
| } |
| +// Runs on Gpu thread. |
| void MusThreadProxy::StartDrmThread() { |
| DCHECK(drm_thread_); |
| drm_thread_->Start(); |
| @@ -121,8 +122,9 @@ void MusThreadProxy::UnRegisterHandlerForDrmDisplayHostManager() { |
| } |
| bool MusThreadProxy::GpuCreateWindow(gfx::AcceleratedWidget widget) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
|
kylechar
2017/05/29 22:31:51
Maybe add MusThreadProxy::IsConnected() method wit
|
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::CreateWindow, |
| base::Unretained(drm_thread_), widget)); |
| @@ -130,8 +132,9 @@ bool MusThreadProxy::GpuCreateWindow(gfx::AcceleratedWidget widget) { |
| } |
| bool MusThreadProxy::GpuDestroyWindow(gfx::AcceleratedWidget widget) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::DestroyWindow, |
| base::Unretained(drm_thread_), widget)); |
| @@ -140,8 +143,9 @@ bool MusThreadProxy::GpuDestroyWindow(gfx::AcceleratedWidget widget) { |
| bool MusThreadProxy::GpuWindowBoundsChanged(gfx::AcceleratedWidget widget, |
| const gfx::Rect& bounds) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::SetWindowBounds, |
| base::Unretained(drm_thread_), widget, bounds)); |
| @@ -152,8 +156,9 @@ void MusThreadProxy::CursorSet(gfx::AcceleratedWidget widget, |
| const std::vector<SkBitmap>& bitmaps, |
| const gfx::Point& location, |
| int frame_delay_ms) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, |
| base::Bind(&DrmThread::SetCursor, base::Unretained(drm_thread_), widget, |
| @@ -163,7 +168,8 @@ void MusThreadProxy::CursorSet(gfx::AcceleratedWidget widget, |
| void MusThreadProxy::Move(gfx::AcceleratedWidget widget, |
| const gfx::Point& location) { |
| // NOTE: Input events skip the main thread to avoid jank. |
| - DCHECK(drm_thread_->IsRunning()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::MoveCursor, |
| base::Unretained(drm_thread_), widget, location)); |
| @@ -184,8 +190,9 @@ void MusThreadProxy::UnRegisterHandlerForDrmOverlayManager() { |
| bool MusThreadProxy::GpuCheckOverlayCapabilities( |
| gfx::AcceleratedWidget widget, |
| const std::vector<OverlayCheck_Params>& overlays) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = |
| base::BindOnce(&MusThreadProxy::GpuCheckOverlayCapabilitiesCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| @@ -198,8 +205,9 @@ bool MusThreadProxy::GpuCheckOverlayCapabilities( |
| } |
| bool MusThreadProxy::GpuRefreshNativeDisplays() { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = |
| base::BindOnce(&MusThreadProxy::GpuRefreshNativeDisplaysCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| @@ -214,8 +222,9 @@ bool MusThreadProxy::GpuRefreshNativeDisplays() { |
| bool MusThreadProxy::GpuConfigureNativeDisplay(int64_t id, |
| const DisplayMode_Params& pmode, |
| const gfx::Point& origin) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto mode = CreateDisplayModeFromParams(pmode); |
| auto callback = |
| @@ -231,8 +240,9 @@ bool MusThreadProxy::GpuConfigureNativeDisplay(int64_t id, |
| } |
| bool MusThreadProxy::GpuDisableNativeDisplay(int64_t id) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = |
| base::BindOnce(&MusThreadProxy::GpuDisableNativeDisplayCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| @@ -245,8 +255,9 @@ bool MusThreadProxy::GpuDisableNativeDisplay(int64_t id) { |
| } |
| bool MusThreadProxy::GpuTakeDisplayControl() { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = base::BindOnce(&MusThreadProxy::GpuTakeDisplayControlCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| auto safe_callback = CreateSafeOnceCallback(std::move(callback)); |
| @@ -258,8 +269,9 @@ bool MusThreadProxy::GpuTakeDisplayControl() { |
| } |
| bool MusThreadProxy::GpuRelinquishDisplayControl() { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = |
| base::BindOnce(&MusThreadProxy::GpuRelinquishDisplayControlCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| @@ -273,8 +285,9 @@ bool MusThreadProxy::GpuRelinquishDisplayControl() { |
| bool MusThreadProxy::GpuAddGraphicsDevice(const base::FilePath& path, |
| const base::FileDescriptor& fd) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::AddGraphicsDevice, |
| base::Unretained(drm_thread_), path, fd)); |
| @@ -282,8 +295,9 @@ bool MusThreadProxy::GpuAddGraphicsDevice(const base::FilePath& path, |
| } |
| bool MusThreadProxy::GpuRemoveGraphicsDevice(const base::FilePath& path) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, base::Bind(&DrmThread::RemoveGraphicsDevice, |
| base::Unretained(drm_thread_), path)); |
| @@ -291,8 +305,9 @@ bool MusThreadProxy::GpuRemoveGraphicsDevice(const base::FilePath& path) { |
| } |
| bool MusThreadProxy::GpuGetHDCPState(int64_t display_id) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = base::BindOnce(&MusThreadProxy::GpuGetHDCPStateCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| auto safe_callback = CreateSafeOnceCallback(std::move(callback)); |
| @@ -306,7 +321,8 @@ bool MusThreadProxy::GpuGetHDCPState(int64_t display_id) { |
| bool MusThreadProxy::GpuSetHDCPState(int64_t display_id, |
| display::HDCPState state) { |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| - DCHECK(drm_thread_->IsRunning()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| auto callback = base::BindOnce(&MusThreadProxy::GpuSetHDCPStateCallback, |
| weak_ptr_factory_.GetWeakPtr()); |
| auto safe_callback = CreateSafeOnceCallback(std::move(callback)); |
| @@ -322,8 +338,9 @@ bool MusThreadProxy::GpuSetColorCorrection( |
| const std::vector<display::GammaRampRGBEntry>& degamma_lut, |
| const std::vector<display::GammaRampRGBEntry>& gamma_lut, |
| const std::vector<float>& correction_matrix) { |
| - DCHECK(drm_thread_->IsRunning()); |
| DCHECK(on_window_server_thread_.CalledOnValidThread()); |
| + if (!drm_thread_ || !drm_thread_->IsRunning()) |
| + return false; |
| drm_thread_->task_runner()->PostTask( |
| FROM_HERE, |
| base::Bind(&DrmThread::SetColorCorrection, base::Unretained(drm_thread_), |