summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firefox.spec7
-rw-r--r--mozilla-1634213.patch96
2 files changed, 102 insertions, 1 deletions
diff --git a/firefox.spec b/firefox.spec
index be43f2d..c7b330e 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -118,7 +118,7 @@ ExcludeArch: s390x
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 76.0.1
-Release: 5%{?nss_tag}%{?dist}
+Release: 6%{?nss_tag}%{?dist}
URL: https://www.mozilla.org/firefox/
License: MPLv1.1 or GPLv2+ or LGPLv2+
Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
@@ -199,6 +199,7 @@ Patch585: firefox-vaapi-extra-frames.patch
Patch586: mozilla-1619882-1.patch
Patch587: mozilla-1619882-2.patch
Patch588: mozilla-1619882-3.patch
+Patch589: mozilla-1634213.patch
# PGO/LTO patches
Patch600: pgo.patch
@@ -415,6 +416,7 @@ This package contains results of tests executed during build.
%patch586 -p1 -b .mozilla-1619882-1
%patch587 -p1 -b .mozilla-1619882-2
%patch588 -p1 -b .mozilla-1619882-3
+%patch589 -p1 -b .mozilla-1634213
# PGO patches
%patch600 -p1 -b .pgo
@@ -989,6 +991,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-6
+- Added fix for mozbz#1634213
+
* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-5
- Added fix for mozbz#1619882 - video flickering when va-api is used.
diff --git a/mozilla-1634213.patch b/mozilla-1634213.patch
new file mode 100644
index 0000000..d2a4138
--- /dev/null
+++ b/mozilla-1634213.patch
@@ -0,0 +1,96 @@
+diff --git a/gfx/gl/GLScreenBuffer.cpp b/gfx/gl/GLScreenBuffer.cpp
+--- a/gfx/gl/GLScreenBuffer.cpp
++++ b/gfx/gl/GLScreenBuffer.cpp
+@@ -88,10 +88,14 @@
+ #if defined(XP_MACOSX)
+ factory = SurfaceFactory_IOSurface::Create(gl, caps, ipcChannel, flags);
+ #elif defined(MOZ_WAYLAND)
+- if (gl->GetContextType() == GLContextType::EGL) {
+- if (gfxPlatformGtk::GetPlatform()->UseWaylandDMABufWebGL()) {
+- factory =
+- MakeUnique<SurfaceFactory_DMABUF>(gl, caps, ipcChannel, flags);
++ if (gl->GetContextType() == GLContextType::EGL &&
++ gfxPlatformGtk::GetPlatform()->UseWaylandDMABufWebGL()) {
++ auto DMABUFFactory =
++ MakeUnique<SurfaceFactory_DMABUF>(gl, caps, ipcChannel, flags);
++ if (DMABUFFactory && DMABUFFactory->CanCreateSurface()) {
++ factory = std::move(DMABUFFactory);
++ } else {
++ gfxPlatformGtk::GetPlatform()->DisableWaylandDMABufWebGL();
+ }
+ }
+ #elif defined(MOZ_X11)
+diff --git a/gfx/gl/SharedSurfaceDMABUF.h b/gfx/gl/SharedSurfaceDMABUF.h
+--- a/gfx/gl/SharedSurfaceDMABUF.h
++++ b/gfx/gl/SharedSurfaceDMABUF.h
+@@ -71,6 +71,11 @@
+ bool hasAlpha = mReadCaps.alpha;
+ return SharedSurface_DMABUF::Create(mGL, mFormats, size, hasAlpha);
+ }
++
++ bool CanCreateSurface() {
++ UniquePtr<SharedSurface> test = CreateShared(gfx::IntSize(1, 1));
++ return test != nullptr;
++ }
+ };
+
+ } // namespace gl
+diff --git a/gfx/thebes/gfxPlatformGtk.h b/gfx/thebes/gfxPlatformGtk.h
+--- a/gfx/thebes/gfxPlatformGtk.h
++++ b/gfx/thebes/gfxPlatformGtk.h
+@@ -88,7 +88,8 @@
+
+ #ifdef MOZ_WAYLAND
+ bool UseWaylandDMABufTextures();
+- bool UseWaylandDMABufWebGL();
++ bool UseWaylandDMABufWebGL() { return mUseWebGLDmabufBackend; }
++ void DisableWaylandDMABufWebGL() { mUseWebGLDmabufBackend = false; }
+ bool UseWaylandHardwareVideoDecoding();
+ #endif
+
+@@ -110,6 +111,9 @@
+ #ifdef MOZ_X11
+ Display* mCompositorDisplay;
+ #endif
++#ifdef MOZ_WAYLAND
++ bool mUseWebGLDmabufBackend;
++#endif
+ };
+
+ #endif /* GFX_PLATFORM_GTK_H */
+diff --git a/gfx/thebes/gfxPlatformGtk.cpp b/gfx/thebes/gfxPlatformGtk.cpp
+--- a/gfx/thebes/gfxPlatformGtk.cpp
++++ b/gfx/thebes/gfxPlatformGtk.cpp
+@@ -116,6 +116,9 @@
+
+ Factory::ReleaseFTLibrary(gPlatformFTLibrary);
+ gPlatformFTLibrary = nullptr;
++
++ mUseWebGLDmabufBackend =
++ IsWaylandDisplay() && nsWaylandDisplay::IsDMABufWebGLEnabled();
+ }
+
+ void gfxPlatformGtk::FlushContentDrawing() {
+@@ -725,9 +728,6 @@
+ bool gfxPlatformGtk::UseWaylandDMABufTextures() {
+ return IsWaylandDisplay() && nsWaylandDisplay::IsDMABufTexturesEnabled();
+ }
+-bool gfxPlatformGtk::UseWaylandDMABufWebGL() {
+- return IsWaylandDisplay() && nsWaylandDisplay::IsDMABufWebGLEnabled();
+-}
+ bool gfxPlatformGtk::UseWaylandHardwareVideoDecoding() {
+ return IsWaylandDisplay() && nsWaylandDisplay::IsDMABufVAAPIEnabled() &&
+ gfxPlatform::CanUseHardwareVideoDecoding();
+diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml
+--- a/modules/libpref/init/StaticPrefList.yaml
++++ b/modules/libpref/init/StaticPrefList.yaml
+@@ -9111,7 +9111,7 @@
+ # Use DMABuf backend for WebGL on Wayland.
+ - name: widget.wayland-dmabuf-webgl.enabled
+ type: RelaxedAtomicBool
+- value: false
++ value: true
+ mirror: always
+
+ # Use VA-API for video playback on Wayland.
+
bgstack15