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;