Commit 45f387f0 authored by Saman Sami's avatar Saman Sami Committed by Commit Bot

Ozone/DRM: Fix DCHECK due to blocking on WaitableEvent

Add base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope to all
methods in DrmThreadProxy that block.

Fixed: 1047827
Change-Id: I0ff3239d85264244dd6f5a0098ee18daa3c4960e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2033633
Commit-Queue: Saman Sami <samans@chromium.org>
Reviewed-by: default avatarRobert Kroeger <rjkroege@chromium.org>
Reviewed-by: default avatarkylechar <kylechar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738266}
parent 19afa81d
......@@ -219,6 +219,7 @@ class ModelSafeWorker;
namespace ui {
class CommandBufferClientImpl;
class CommandBufferLocal;
class DrmThreadProxy;
class GpuState;
class MaterialDesignController;
}
......@@ -499,6 +500,7 @@ class BASE_EXPORT ScopedAllowBaseSyncPrimitivesOutsideBlockingScope {
friend class media::PaintCanvasVideoRenderer;
friend class mojo::SyncCallRestrictions;
friend class net::NetworkConfigWatcherMacThread;
friend class ui::DrmThreadProxy;
friend class viz::HostGpuMemoryBufferManager;
friend class vr::VrShell;
......
......@@ -88,6 +88,7 @@ void DrmThreadProxy::CreateBuffer(gfx::AcceleratedWidget widget,
TRACE_EVENT0("drm", "DrmThreadProxy::CreateBuffer");
DCHECK(drm_thread_.task_runner())
<< "no task runner! in DrmThreadProxy::CreateBuffer";
base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_wait;
base::OnceClosure task =
base::BindOnce(&DrmThread::CreateBuffer, base::Unretained(&drm_thread_),
widget, size, format, usage, flags, buffer, framebuffer);
......@@ -129,6 +130,7 @@ void DrmThreadProxy::CreateBufferFromHandle(
std::unique_ptr<GbmBuffer>* buffer,
scoped_refptr<DrmFramebuffer>* framebuffer) {
TRACE_EVENT0("drm", "DrmThreadProxy::CreateBufferFromHandle");
base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_wait;
base::OnceClosure task = base::BindOnce(
&DrmThread::CreateBufferFromHandle, base::Unretained(&drm_thread_),
widget, size, format, std::move(handle), buffer, framebuffer);
......@@ -169,6 +171,7 @@ std::vector<OverlayStatus> DrmThreadProxy::CheckOverlayCapabilitiesSync(
const std::vector<OverlaySurfaceCandidate>& candidates) {
TRACE_EVENT0("drm", "DrmThreadProxy::CheckOverlayCapabilitiesSync");
DCHECK(drm_thread_.task_runner());
base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_wait;
std::vector<OverlayStatus> result;
base::OnceClosure task = base::BindOnce(
&DrmThread::CheckOverlayCapabilitiesSync, base::Unretained(&drm_thread_),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment