diff --git a/.gitignore b/.gitignore index 821c45c..8de46f2 100644 --- a/.gitignore +++ b/.gitignore @@ -422,3 +422,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-langpacks-81.0.1-20200930.tar.xz /firefox-81.0.2.source.tar.xz /firefox-langpacks-81.0.2-20201012.tar.xz +/firefox-82.0.source.tar.xz +/firefox-langpacks-82.0-20201015.tar.xz diff --git a/firefox.sh.in b/firefox.sh.in index 63c04cc..863ef1f 100644 --- a/firefox.sh.in +++ b/firefox.sh.in @@ -65,6 +65,7 @@ MOZ_LANGPACKS_DIR="$MOZ_DIST_BIN/langpacks" MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" MOZ_PROGRAM="$MOZ_DIST_BIN/$MOZ_FIREFOX_FILE" MOZ_LAUNCHER="$MOZ_DIST_BIN/run-mozilla.sh" +GETENFORCE_FILE="/usr/sbin/getenforce" ## ## Enable Wayland backend? @@ -182,8 +183,8 @@ fi # When Firefox is not running, restore SELinux labels for profile files # (rhbz#1731371) if [ $MOZILLA_DOWN -ne 0 ]; then - if [ `getenforce` != "Disabled" ]; then - restorecon -vr ~/.mozilla/firefox/* & + if [ -x $GETENFORCE_FILE ] && [`getenforce` != "Disabled" ]; then + (restorecon -vr ~/.mozilla/firefox/* &) fi fi diff --git a/firefox.spec b/firefox.spec index e1a7750..88cd822 100644 --- a/firefox.spec +++ b/firefox.spec @@ -106,13 +106,13 @@ ExcludeArch: s390x Summary: Mozilla Firefox Web browser Name: firefox -Version: 81.0.2 -Release: 2%{?dist} +Version: 82.0 +Release: 4%{?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 %if %{with langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20201012.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20201015.tar.xz %endif Source2: cbindgen-vendor.tar.xz Source10: firefox-mozconfig @@ -164,9 +164,6 @@ Patch228: disable-openh264-download.patch # Upstream patches Patch402: mozilla-1196777.patch -Patch403: mozilla-1656505-1.patch -Patch404: mozilla-1656505-2.patch -Patch405: mozilla-1665324.patch Patch406: mozilla-1665329.patch Patch407: mozilla-1667096.patch Patch408: mozilla-1663844.patch @@ -176,6 +173,7 @@ Patch411: mozilla-1668771.patch Patch412: mozilla-1634404.patch Patch413: mozilla-1669495.patch Patch414: mozilla-1656727.patch +Patch415: mozilla-1670333.patch # Wayland specific upstream patches Patch574: firefox-pipewire-0-2.patch @@ -375,9 +373,6 @@ This package contains results of tests executed during build. %patch228 -p1 -b .disable-openh264-download %patch402 -p1 -b .1196777 -%patch403 -p1 -b .1656505-1 -%patch404 -p1 -b .1656505-2 -%patch405 -p1 -b .1665324 %patch406 -p1 -b .1665329 %patch407 -p1 -b .1667096 %patch408 -p1 -b .1663844 @@ -387,12 +382,13 @@ This package contains results of tests executed during build. %patch412 -p1 -b .1634404 %patch413 -p1 -b .1669495 %patch414 -p1 -b .1656727 +%patch415 -p1 -b .1670333 # Wayland specific upstream patches -%if 0%{?fedora} < 32 -%patch574 -p1 -b .firefox-pipewire-0-2 -%else +%if 0%{?fedora} > 31 || 0%{?eln} %patch575 -p1 -b .firefox-pipewire-0-3 +%else +%patch574 -p1 -b .firefox-pipewire-0-2 %endif # VA-API fixes @@ -618,10 +614,14 @@ echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig %endif %if 0%{?build_with_pgo} echo "ac_add_options MOZ_PGO=1" >> .mozconfig + # Temporary disabled due to GCC bug -%if 0%{?fedora} > 32 +# Fixed by https://bugzilla.mozilla.org/show_bug.cgi?id=1671345 +# Should be in Firefox 83 +%if 0%{?fedora} > 33 echo "ac_add_options --enable-lto" >> .mozconfig %endif + # PGO build doesn't work with ccache export CCACHE_DISABLE=1 %endif @@ -981,6 +981,22 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Mon Oct 19 2020 Martin Stransky - 82.0-4 +- Updated openh264 patch to use keyframes from contained + for openh264 only. + +* Mon Oct 19 2020 Martin Stransky - 82.0-3 +- Added ELN build fixes + +* Thu Oct 15 2020 Martin Stransky - 82.0-2 +- Updated SELinux relabel setup (rhbz#1731371) + +* Thu Oct 15 2020 Martin Stransky - 82.0-1 +- Updated to 82.0 Build 2 + +* Thu Oct 15 2020 Martin Stransky - 81.0.2-3 +- Added experimental openh264 seek patch (mzbz#1670333) + * Mon Oct 12 2020 Martin Stransky - 81.0.2-2 - Added a partial fox for rhbz#1886722 diff --git a/mozilla-1656505-1.patch b/mozilla-1656505-1.patch deleted file mode 100644 index 23ec35c..0000000 --- a/mozilla-1656505-1.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/widget/gtk/DMABufLibWrapper.cpp b/widget/gtk/DMABufLibWrapper.cpp ---- a/widget/gtk/DMABufLibWrapper.cpp -+++ b/widget/gtk/DMABufLibWrapper.cpp -@@ -149,8 +149,8 @@ - } - - nsDMABufDevice::nsDMABufDevice() -- : mXRGBFormat({true, false, GBM_FORMAT_ARGB8888, nullptr, 0}), -- mARGBFormat({true, true, GBM_FORMAT_XRGB8888, nullptr, 0}), -+ : mXRGBFormat({true, false, GBM_FORMAT_XRGB8888, nullptr, 0}), -+ mARGBFormat({true, true, GBM_FORMAT_ARGB8888, nullptr, 0}), - mGbmDevice(nullptr), - mGbmFd(-1), - mGdmConfigured(false), - diff --git a/mozilla-1656505-2.patch b/mozilla-1656505-2.patch deleted file mode 100644 index 48ee37b..0000000 --- a/mozilla-1656505-2.patch +++ /dev/null @@ -1,113 +0,0 @@ -diff -up firefox-81.0/gfx/gl/SharedSurfaceDMABUF.cpp.1656505-2 firefox-81.0/gfx/gl/SharedSurfaceDMABUF.cpp ---- firefox-81.0/gfx/gl/SharedSurfaceDMABUF.cpp.1656505-2 2020-09-15 03:48:28.000000000 +0200 -+++ firefox-81.0/gfx/gl/SharedSurfaceDMABUF.cpp 2020-09-15 18:13:03.683458125 +0200 -@@ -63,6 +63,8 @@ UniquePtr Surface - return dmabufFactory; - } - -+ LOGDMABUF( -+ ("SurfaceFactory_DMABUF::Create() failed, fallback to SW buffers.\n")); - gfxPlatformGtk::GetPlatform()->DisableDMABufWebGL(); - return nullptr; - } -diff -up firefox-81.0/widget/gtk/DMABufSurface.cpp.1656505-2 firefox-81.0/widget/gtk/DMABufSurface.cpp ---- firefox-81.0/widget/gtk/DMABufSurface.cpp.1656505-2 2020-09-15 03:48:38.000000000 +0200 -+++ firefox-81.0/widget/gtk/DMABufSurface.cpp 2020-09-15 18:13:03.683458125 +0200 -@@ -26,6 +26,7 @@ - #include "GLContextTypes.h" // for GLContext, etc - #include "GLContextEGL.h" - #include "GLContextProvider.h" -+#include "ScopedGLHelpers.h" - - #include "mozilla/layers/LayersSurfaces.h" - -@@ -320,6 +321,9 @@ bool DMABufSurfaceRGBA::Create(int aWidt - mWidth = aWidth; - mHeight = aHeight; - -+ LOGDMABUF(("DMABufSurfaceRGBA::Create() UID %d size %d x %d\n", mUID, mWidth, -+ mHeight)); -+ - mGmbFormat = GetDMABufDevice()->GetGbmFormat(mSurfaceFlags & DMABUF_ALPHA); - if (!mGmbFormat) { - // Requested DRM format is not supported. -@@ -329,6 +333,7 @@ bool DMABufSurfaceRGBA::Create(int aWidt - bool useModifiers = (aDMABufSurfaceFlags & DMABUF_USE_MODIFIERS) && - mGmbFormat->mModifiersCount > 0; - if (useModifiers) { -+ LOGDMABUF((" Creating with modifiers\n")); - mGbmBufferObject[0] = nsGbmLib::CreateWithModifiers( - GetDMABufDevice()->GetGbmDevice(), mWidth, mHeight, mGmbFormat->mFormat, - mGmbFormat->mModifiers, mGmbFormat->mModifiersCount); -@@ -360,6 +365,7 @@ bool DMABufSurfaceRGBA::Create(int aWidt - } - - if (!mGbmBufferObject[0]) { -+ LOGDMABUF((" Failed to create GbmBufferObject\n")); - return false; - } - -@@ -429,6 +435,8 @@ void DMABufSurfaceRGBA::ImportSurfaceDes - if (desc.refCount().Length() > 0) { - GlobalRefCountImport(desc.refCount()[0].ClonePlatformHandle().release()); - } -+ -+ LOGDMABUF(("DMABufSurfaceRGBA::Import() UID %d\n", mUID)); - } - - bool DMABufSurfaceRGBA::Create(const SurfaceDescriptor& aDesc) { -@@ -448,6 +456,8 @@ bool DMABufSurfaceRGBA::Serialize( - AutoTArray fenceFDs; - AutoTArray refCountFDs; - -+ LOGDMABUF(("DMABufSurfaceRGBA::Serialize() UID %d\n", mUID)); -+ - width.AppendElement(mWidth); - height.AppendElement(mHeight); - format.AppendElement(mGmbFormat->mFormat); -@@ -469,7 +479,6 @@ bool DMABufSurfaceRGBA::Serialize( - SurfaceDescriptorDMABuf(mSurfaceType, mBufferModifier, mGbmBufferFlags, - fds, width, height, format, strides, offsets, - GetYUVColorSpace(), fenceFDs, mUID, refCountFDs); -- - return true; - } - -@@ -556,7 +565,7 @@ bool DMABufSurfaceRGBA::CreateTexture(GL - - aGLContext->MakeCurrent(); - aGLContext->fGenTextures(1, &mTexture); -- aGLContext->fBindTexture(LOCAL_GL_TEXTURE_2D, mTexture); -+ const ScopedBindTexture savedTex(aGLContext, mTexture); - aGLContext->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, - LOCAL_GL_CLAMP_TO_EDGE); - aGLContext->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_T, -@@ -567,6 +576,7 @@ bool DMABufSurfaceRGBA::CreateTexture(GL - LOCAL_GL_LINEAR); - aGLContext->fEGLImageTargetTexture2D(LOCAL_GL_TEXTURE_2D, mEGLImage); - mGL = aGLContext; -+ - return true; - } - -@@ -611,6 +621,10 @@ void* DMABufSurface::MapInternal(uint32_ - return nullptr; - } - -+ LOGDMABUF( -+ ("DMABufSurfaceRGBA::MapInternal() UID %d size %d x %d -> %d x %d\n", -+ mUID, aX, aY, aWidth, aHeight)); -+ - mMappedRegionStride[aPlane] = 0; - mMappedRegionData[aPlane] = nullptr; - mMappedRegion[aPlane] = nsGbmLib::Map( -@@ -988,7 +1002,7 @@ bool DMABufSurfaceYUV::CreateTexture(GLC - - aGLContext->MakeCurrent(); - aGLContext->fGenTextures(1, &mTexture[aPlane]); -- aGLContext->fBindTexture(LOCAL_GL_TEXTURE_2D, mTexture[aPlane]); -+ const ScopedBindTexture savedTex(aGLContext, mTexture[aPlane]); - aGLContext->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, - LOCAL_GL_CLAMP_TO_EDGE); - aGLContext->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_T, - diff --git a/mozilla-1656727.patch b/mozilla-1656727.patch index 586fa9d..91547b0 100644 --- a/mozilla-1656727.patch +++ b/mozilla-1656727.patch @@ -1,6 +1,6 @@ -diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp ---- firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 2020-10-08 11:35:41.921508799 +0200 -+++ firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp 2020-10-08 11:37:05.036686876 +0200 +diff -up firefox-82.0/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-82.0/widget/gtk/WindowSurfaceWayland.cpp +--- firefox-82.0/widget/gtk/WindowSurfaceWayland.cpp.1656727 2020-10-15 16:16:53.522050159 +0200 ++++ firefox-82.0/widget/gtk/WindowSurfaceWayland.cpp 2020-10-15 16:18:24.956289348 +0200 @@ -158,7 +158,6 @@ We allocate shared memory (shm) by mmap( between us and wayland compositor. We draw our graphics data to the shm and handle to wayland compositor by WindowBackBuffer/WindowSurfaceWayland @@ -51,10 +51,10 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 + } +} + - nsWaylandDisplay* WindowBackBuffer::GetWaylandDisplay() { + RefPtr WindowBackBuffer::GetWaylandDisplay() { return mWindowSurfaceWayland->GetWaylandDisplay(); } -@@ -398,7 +435,6 @@ WindowSurfaceWayland::WindowSurfaceWayla +@@ -399,7 +436,6 @@ WindowSurfaceWayland::WindowSurfaceWayla mWaylandFullscreenDamage(false), mFrameCallback(nullptr), mLastCommittedSurface(nullptr), @@ -62,7 +62,7 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 mLastCommitTime(0), mDrawToWaylandBufferDirectly(true), mCanSwitchWaylandBuffer(true), -@@ -410,6 +446,7 @@ WindowSurfaceWayland::WindowSurfaceWayla +@@ -411,6 +447,7 @@ WindowSurfaceWayland::WindowSurfaceWayla for (int i = 0; i < BACK_BUFFER_NUM; i++) { mShmBackupBuffer[i] = nullptr; } @@ -70,7 +70,7 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 } WindowSurfaceWayland::~WindowSurfaceWayland() { -@@ -417,12 +454,9 @@ WindowSurfaceWayland::~WindowSurfaceWayl +@@ -418,12 +455,9 @@ WindowSurfaceWayland::~WindowSurfaceWayl NS_WARNING("Deleted WindowSurfaceWayland with a pending commit!"); } @@ -86,7 +86,7 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 if (mFrameCallback) { wl_callback_destroy(mFrameCallback); -@@ -863,23 +897,11 @@ bool WindowSurfaceWayland::CommitImageCa +@@ -864,23 +898,11 @@ bool WindowSurfaceWayland::CommitImageCa return true; } @@ -110,7 +110,7 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 LOGWAYLAND((" mFrameCallback = %p\n", mFrameCallback)); LOGWAYLAND((" mLastCommittedSurface = %p\n", mLastCommittedSurface)); LOGWAYLAND((" mBufferPendingCommit = %d\n", mBufferPendingCommit)); -@@ -915,16 +937,10 @@ void WindowSurfaceWayland::CommitWayland +@@ -916,16 +938,10 @@ void WindowSurfaceWayland::CommitWayland MOZ_ASSERT(!mFrameCallback || waylandSurface != mLastCommittedSurface, "Missing wayland surface at frame callback!"); @@ -129,7 +129,7 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 EVENT_LOOP_DELAY); } return; -@@ -1036,25 +1052,6 @@ void WindowSurfaceWayland::FrameCallback +@@ -1037,25 +1053,6 @@ void WindowSurfaceWayland::FrameCallback CommitWaylandBuffer(); } @@ -155,9 +155,9 @@ diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp.1656727 firefox-81.0 } // namespace widget } // namespace mozilla -diff -up firefox-81.0.1/widget/gtk/WindowSurfaceWayland.h.1656727 firefox-81.0.1/widget/gtk/WindowSurfaceWayland.h ---- firefox-81.0.1/widget/gtk/WindowSurfaceWayland.h.1656727 2020-09-30 19:42:37.000000000 +0200 -+++ firefox-81.0.1/widget/gtk/WindowSurfaceWayland.h 2020-10-08 11:35:41.928508817 +0200 +diff -up firefox-82.0/widget/gtk/WindowSurfaceWayland.h.1656727 firefox-82.0/widget/gtk/WindowSurfaceWayland.h +--- firefox-82.0/widget/gtk/WindowSurfaceWayland.h.1656727 2020-10-14 19:20:27.000000000 +0200 ++++ firefox-82.0/widget/gtk/WindowSurfaceWayland.h 2020-10-15 16:16:53.528050175 +0200 @@ -161,7 +161,7 @@ class WindowSurfaceWayland : public Wind // If we fail (wayland compositor is busy, // wl_surface is not created yet) we queue the painting diff --git a/mozilla-1665324.patch b/mozilla-1665324.patch deleted file mode 100644 index 9fdffdb..0000000 --- a/mozilla-1665324.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h b/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h ---- a/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h -+++ b/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h -@@ -38,14 +38,6 @@ - if (aParams.VideoConfig().HasAlpha()) { - return nullptr; - } -- if (VPXDecoder::IsVPX(aParams.mConfig.mMimeType) && -- aParams.mOptions.contains(CreateDecoderParams::Option::LowLatency) && -- !StaticPrefs::media_ffmpeg_low_latency_enabled()) { -- // We refuse to create a decoder with low latency enabled if it's VP8 or -- // VP9 unless specifically allowed: this will fallback to libvpx later. -- // We do allow it for h264. -- return nullptr; -- } - RefPtr decoder = new FFmpegVideoDecoder( - mLib, aParams.VideoConfig(), aParams.mKnowsCompositor, - aParams.mImageContainer, -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 -@@ -7109,13 +7109,6 @@ - mirror: always - #endif - --#if defined(MOZ_FFMPEG) || defined(MOZ_FFVPX) --- name: media.ffmpeg.low-latency.enabled -- type: RelaxedAtomicBool -- value: false -- mirror: always --#endif -- - #ifdef MOZ_WMF - - - name: media.wmf.enabled - diff --git a/mozilla-1669495.patch b/mozilla-1669495.patch index 3ef027c..e30bb89 100644 --- a/mozilla-1669495.patch +++ b/mozilla-1669495.patch @@ -1,6 +1,6 @@ -diff -up firefox-81.0.1/layout/xul/nsMenuPopupFrame.cpp.1669495 firefox-81.0.1/layout/xul/nsMenuPopupFrame.cpp ---- firefox-81.0.1/layout/xul/nsMenuPopupFrame.cpp.1669495 2020-10-08 10:09:23.765819989 +0200 -+++ firefox-81.0.1/layout/xul/nsMenuPopupFrame.cpp 2020-10-08 10:09:23.771820010 +0200 +diff -up firefox-82.0/layout/xul/nsMenuPopupFrame.cpp.1669495 firefox-82.0/layout/xul/nsMenuPopupFrame.cpp +--- firefox-82.0/layout/xul/nsMenuPopupFrame.cpp.1669495 2020-10-15 16:13:12.304471453 +0200 ++++ firefox-82.0/layout/xul/nsMenuPopupFrame.cpp 2020-10-15 16:13:12.308471463 +0200 @@ -533,6 +533,26 @@ void nsMenuPopupFrame::LayoutPopup(nsBox } prefSize = XULBoundsCheck(minSize, prefSize, maxSize); @@ -28,10 +28,10 @@ diff -up firefox-81.0.1/layout/xul/nsMenuPopupFrame.cpp.1669495 firefox-81.0.1/l bool sizeChanged = (mPrefSize != prefSize); // if the size changed then set the bounds to be the preferred size if (sizeChanged) { -diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gtk/nsWindow.cpp ---- firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 2020-10-08 10:09:23.770820007 +0200 -+++ firefox-81.0.1/widget/gtk/nsWindow.cpp 2020-10-08 10:10:29.225052014 +0200 -@@ -1090,11 +1090,13 @@ void nsWindow::Show(bool aState) { +diff -up firefox-82.0/widget/gtk/nsWindow.cpp.1669495 firefox-82.0/widget/gtk/nsWindow.cpp +--- firefox-82.0/widget/gtk/nsWindow.cpp.1669495 2020-10-15 16:13:12.307471461 +0200 ++++ firefox-82.0/widget/gtk/nsWindow.cpp 2020-10-15 16:15:49.243882006 +0200 +@@ -1092,11 +1092,13 @@ void nsWindow::Show(bool aState) { void nsWindow::ResizeInt(int aX, int aY, int aWidth, int aHeight, bool aMove, bool aRepaint) { @@ -44,10 +44,10 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt + LOG((" ConstrainSize: w:%d h;%d\n", aWidth, aHeight)); + - if (aMove) { - mBounds.x = aX; - mBounds.y = aY; -@@ -1132,8 +1134,7 @@ void nsWindow::ResizeInt(int aX, int aY, + // If we used to have insane bounds, we may have skipped actually positioning + // the widget in NativeMoveResizeWaylandPopup, in which case we need to + // actually position it now as well. +@@ -1141,8 +1143,7 @@ void nsWindow::ResizeInt(int aX, int aY, } void nsWindow::Resize(double aWidth, double aHeight, bool aRepaint) { @@ -57,7 +57,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt double scale = BoundsUseDesktopPixels() ? GetDesktopToDeviceScale().scale : 1.0; -@@ -1145,8 +1146,8 @@ void nsWindow::Resize(double aWidth, dou +@@ -1154,8 +1155,8 @@ void nsWindow::Resize(double aWidth, dou void nsWindow::Resize(double aX, double aY, double aWidth, double aHeight, bool aRepaint) { @@ -68,7 +68,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt double scale = BoundsUseDesktopPixels() ? GetDesktopToDeviceScale().scale : 1.0; -@@ -1469,14 +1470,15 @@ void nsWindow::NativeMoveResizeWaylandPo +@@ -1478,14 +1479,15 @@ void nsWindow::NativeMoveResizeWaylandPo newBounds.x = GdkCoordToDevicePixels(newBounds.x); newBounds.y = GdkCoordToDevicePixels(newBounds.y); @@ -86,7 +86,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt bool needsPositionUpdate = (newBounds.x != mBounds.x || newBounds.y != mBounds.y); bool needsSizeUpdate = -@@ -1484,6 +1486,7 @@ void nsWindow::NativeMoveResizeWaylandPo +@@ -1493,6 +1495,7 @@ void nsWindow::NativeMoveResizeWaylandPo // Update view if (needsSizeUpdate) { @@ -94,7 +94,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt int32_t p2a = AppUnitsPerCSSPixel() / gfxPlatformGtk::GetFontScaleFactor(); mPreferredPopupRect = nsRect(NSIntPixelsToAppUnits(newBounds.x, p2a), NSIntPixelsToAppUnits(newBounds.y, p2a), -@@ -1502,6 +1505,7 @@ void nsWindow::NativeMoveResizeWaylandPo +@@ -1511,6 +1514,7 @@ void nsWindow::NativeMoveResizeWaylandPo } if (needsPositionUpdate) { @@ -102,7 +102,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt // The newBounds are in coordinates relative to the parent window/popup. // The NotifyWindowMoved requires the coordinates relative to the toplevel. // We use the gdk_window_get_origin to get correct coordinates. -@@ -4211,6 +4215,8 @@ nsresult nsWindow::Create(nsIWidget* aPa +@@ -4245,6 +4249,8 @@ nsresult nsWindow::Create(nsIWidget* aPa // save our bounds mBounds = aRect; @@ -111,7 +111,7 @@ diff -up firefox-81.0.1/widget/gtk/nsWindow.cpp.1669495 firefox-81.0.1/widget/gt mPreferredPopupRectFlushed = false; -@@ -5061,13 +5067,16 @@ void nsWindow::NativeShow(bool aAction) +@@ -5083,13 +5089,16 @@ void nsWindow::NativeShow(bool aAction) } } diff --git a/mozilla-1670333.patch b/mozilla-1670333.patch new file mode 100644 index 0000000..a7c7f8a --- /dev/null +++ b/mozilla-1670333.patch @@ -0,0 +1,68 @@ +diff -up firefox-82.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-82.0/dom/media/mp4/MP4Demuxer.cpp +--- firefox-82.0/dom/media/mp4/MP4Demuxer.cpp.1670333 2020-10-14 19:20:18.000000000 +0200 ++++ firefox-82.0/dom/media/mp4/MP4Demuxer.cpp 2020-10-19 20:56:38.362039524 +0200 +@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re + DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \ + __func__, ##__VA_ARGS__) + ++extern bool gUseKeyframeFromContainer; ++ + namespace mozilla { + + DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer); +@@ -394,6 +396,12 @@ already_AddRefed MP4TrackD + [[fallthrough]]; + case H264::FrameType::OTHER: { + bool keyframe = type == H264::FrameType::I_FRAME; ++ if (gUseKeyframeFromContainer) { ++ if (sample->mKeyframe && sample->mKeyframe != keyframe) { ++ sample->mKeyframe = keyframe; ++ } ++ break; ++ } + if (sample->mKeyframe != keyframe) { + NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe " + "@ pts:%" PRId64 " dur:%" PRId64 +diff -up firefox-82.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-82.0/dom/media/platforms/PDMFactory.cpp +--- firefox-82.0/dom/media/platforms/PDMFactory.cpp.1670333 2020-10-14 19:20:18.000000000 +0200 ++++ firefox-82.0/dom/media/platforms/PDMFactory.cpp 2020-10-19 20:53:14.631214334 +0200 +@@ -49,6 +49,8 @@ + + #include + ++bool gUseKeyframeFromContainer = false; ++ + namespace mozilla { + + extern already_AddRefed CreateBlankDecoderModule(); +@@ -380,7 +382,8 @@ void PDMFactory::CreatePDMs() { + #ifdef MOZ_FFMPEG + if (StaticPrefs::media_ffmpeg_enabled()) { + m = FFmpegRuntimeLinker::CreateDecoderModule(); +- mFFmpegFailedToLoad = !StartupPDM(m); ++ mFFmpegUsed = StartupPDM(m); ++ mFFmpegFailedToLoad = !mFFmpegUsed; + } else { + mFFmpegFailedToLoad = false; + } +@@ -395,7 +398,8 @@ void PDMFactory::CreatePDMs() { + m = new AgnosticDecoderModule(); + StartupPDM(m); + +- if (StaticPrefs::media_gmp_decoder_enabled()) { ++ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed) { ++ gUseKeyframeFromContainer = true; + m = new GMPDecoderModule(); + mGMPPDMFailedToStartup = !StartupPDM(m); + } else { +diff -up firefox-82.0/dom/media/platforms/PDMFactory.h.1670333 firefox-82.0/dom/media/platforms/PDMFactory.h +--- firefox-82.0/dom/media/platforms/PDMFactory.h.1670333 2020-10-14 19:20:18.000000000 +0200 ++++ firefox-82.0/dom/media/platforms/PDMFactory.h 2020-10-19 20:53:14.631214334 +0200 +@@ -70,6 +70,7 @@ class PDMFactory final { + + bool mWMFFailedToLoad = false; + bool mFFmpegFailedToLoad = false; ++ bool mFFmpegUsed = false; + bool mGMPPDMFailedToStartup = false; + + friend class RemoteVideoDecoderParent; diff --git a/sources b/sources index 4597967..38b1045 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (cbindgen-vendor.tar.xz) = f0425020e2d43a3d28b03f82bdb9719728112a2c94b1d595da384d0674ca21d0940a6f729a690434d670e598fbc6bb5193c89da0a4633a734c70dd786222e711 -SHA512 (firefox-81.0.2.source.tar.xz) = 8a3ef4819120e93b860344ef05b4ef05262e3f127053ef66b3c1eb4b157932913f72fd4ba5500e86c2ef29f25be58e0c6e2c47a1c1ecde2abe77ece5f948fd75 -SHA512 (firefox-langpacks-81.0.2-20201012.tar.xz) = 5cc72b8a2e27318a55cda9156c6ade3613ae7f560d76fa0a12182626c6051b8d02f23b95597d185daf35b85bd8491bc44a6ca214619b641dc47f98564db75c97 +SHA512 (firefox-82.0.source.tar.xz) = 887bceb0fffe257534b53cd019d35087752042ee7e9db089e01b1a930a30deb0c3dc6b32167552362092bdcec794dd5698046548d3419e17ecd2def366d1bde8 +SHA512 (firefox-langpacks-82.0-20201015.tar.xz) = 8c0cc37ee918bef930feed32aacaed3f7f28f1dd6615d4719d694d6efcd0fb621e03b613f21cd7b34d188b770d8a903568c676d7e3bb4484ab532a45b62a52a8