From 59c99a1b8cadab099b49441cd445b5df1aef88a6 Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Thu, 23 Apr 2020 16:06:54 +0000 Subject: [PATCH] Bug 1632059 [Wayland] Use wayland display directly for va-api, r=jhorak Differential Revision: https://phabricator.services.mozilla.com/D72122 --- dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp | 7 ++++++- widget/gtk/nsWaylandDisplay.cpp | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp index c0156e84cbc0..a8f2502b1a51 100644 --- a/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp +++ b/dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp @@ -178,7 +178,12 @@ bool FFmpegVideoDecoder::CreateVAAPIDeviceContext() { AVHWDeviceContext* hwctx = (AVHWDeviceContext*)mVAAPIDeviceContext->data; AVVAAPIDeviceContext* vactx = (AVVAAPIDeviceContext*)hwctx->hwctx; - mDisplay = mLib->vaGetDisplayWl(widget::WaylandDisplayGet()->GetDisplay()); + wl_display* display = widget::WaylandDisplayGetWLDisplay(); + if (!display) { + FFMPEG_LOG("Can't get default wayland display."); + return false; + } + mDisplay = mLib->vaGetDisplayWl(display); hwctx->user_opaque = new VAAPIDisplayHolder(mLib, mDisplay); hwctx->free = VAAPIDisplayReleaseCallback; diff --git a/widget/gtk/nsWaylandDisplay.cpp b/widget/gtk/nsWaylandDisplay.cpp index 2bd6cfb8a529..2a5c379a9536 100644 --- a/widget/gtk/nsWaylandDisplay.cpp +++ b/widget/gtk/nsWaylandDisplay.cpp @@ -35,6 +35,9 @@ bool nsWaylandDisplay::sIsDMABufConfigured = false; wl_display* WaylandDisplayGetWLDisplay(GdkDisplay* aGdkDisplay) { if (!aGdkDisplay) { aGdkDisplay = gdk_display_get_default(); + if (!aGdkDisplay || GDK_IS_X11_DISPLAY(aGdkDisplay)) { + return nullptr; + } } // Available as of GTK 3.8+ @@ -537,8 +540,7 @@ bool nsWaylandDisplay::IsDMABufWebGLEnabled() { StaticPrefs::widget_wayland_dmabuf_webgl_enabled(); } bool nsWaylandDisplay::IsDMABufVAAPIEnabled() { - return IsDMABufEnabled() && - StaticPrefs::widget_wayland_dmabuf_vaapi_enabled(); + return StaticPrefs::widget_wayland_dmabuf_vaapi_enabled(); } void* nsGbmLib::sGbmLibHandle = nullptr;