| 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())
|
| + 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_),
|
|
|