summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firefox.spec9
-rw-r--r--mozilla-1656727.patch208
2 files changed, 5 insertions, 212 deletions
diff --git a/firefox.spec b/firefox.spec
index 4903f59..24b2e0d 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -35,7 +35,7 @@
%global build_with_pgo 1
%endif
# Build PGO builds on Wayland backend
-%global pgo_wayland 1
+%global pgo_wayland 0
%endif
%global wayland_backend_default 1
%if 0%{?flatpak}
@@ -104,7 +104,7 @@
Summary: Mozilla Firefox Web browser
Name: firefox
Version: 81.0.1
-Release: 6%{?dist}
+Release: 7%{?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
@@ -170,7 +170,6 @@ Patch408: mozilla-1663844.patch
Patch409: mozilla-1640567.patch
Patch410: mozilla-1661192.patch
Patch411: mozilla-1668771.patch
-Patch412: mozilla-1656727.patch
# Wayland specific upstream patches
Patch574: firefox-pipewire-0-2.patch
@@ -379,7 +378,6 @@ This package contains results of tests executed during build.
%patch409 -p1 -b .1640567
%patch410 -p1 -b .1661192
%patch411 -p1 -b .1668771
-%patch412 -p1 -b .1656727
# Wayland specific upstream patches
%if 0%{?fedora} < 32
@@ -974,6 +972,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
#---------------------------------------------------------------------
%changelog
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-7
+- Removed mozbz#1656727 as it causes a regression rhbz#1886243
+
* Wed Oct 7 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-6
- PGO patch update
- Added fix for mzbz#1669442 (LTO builds)
diff --git a/mozilla-1656727.patch b/mozilla-1656727.patch
deleted file mode 100644
index 3631e8c..0000000
--- a/mozilla-1656727.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-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-05 16:05:18.057494700 +0200
-+++ firefox-81.0.1/widget/gtk/WindowSurfaceWayland.cpp 2020-10-05 16:06:49.011909031 +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
- (wl_buffer/wl_surface).
--
- */
-
- #define EVENT_LOOP_DELAY (1000 / 240)
-@@ -166,6 +165,36 @@ handle to wayland compositor by WindowBa
- #define BUFFER_BPP 4
- gfx::SurfaceFormat WindowBackBuffer::mFormat = gfx::SurfaceFormat::B8G8R8A8;
-
-+static mozilla::Mutex* gDelayedCommitLock = nullptr;
-+static GList* gDelayedCommits = nullptr;
-+
-+static void DelayedCommitsEnsureMutext() {
-+ if (!gDelayedCommitLock) {
-+ gDelayedCommitLock = new mozilla::Mutex("DelayedCommit lock");
-+ }
-+}
-+
-+static void DelayedCommitsRemoveSurface(WindowSurfaceWayland* aSurface) {
-+ GList* foundCommit = g_list_find(gDelayedCommits, aSurface);
-+ if (foundCommit) {
-+ MutexAutoLock lock(*gDelayedCommitLock);
-+ gDelayedCommits = g_list_delete_link(gDelayedCommits, foundCommit);
-+ }
-+}
-+
-+// When a new window is created we may not have a valid wl_surface
-+// for drawing (Gtk haven't created it yet). All commits are queued
-+// and CommitWaylandBuffer() is called by timer when wl_surface is ready
-+// for drawing.
-+static void WaylandBufferDelayCommitHandler(WindowSurfaceWayland* aSurface) {
-+ GList* foundCommit = g_list_find(gDelayedCommits, aSurface);
-+ if (foundCommit) {
-+ aSurface->CommitWaylandBuffer();
-+ MutexAutoLock lock(*gDelayedCommitLock);
-+ gDelayedCommits = g_list_delete_link(gDelayedCommits, foundCommit);
-+ }
-+}
-+
- nsWaylandDisplay* WindowBackBuffer::GetWaylandDisplay() {
- return mWindowSurfaceWayland->GetWaylandDisplay();
- }
-@@ -398,7 +427,6 @@ WindowSurfaceWayland::WindowSurfaceWayla
- mWaylandFullscreenDamage(false),
- mFrameCallback(nullptr),
- mLastCommittedSurface(nullptr),
-- mDelayedCommitHandle(nullptr),
- mLastCommitTime(0),
- mDrawToWaylandBufferDirectly(true),
- mCanSwitchWaylandBuffer(true),
-@@ -410,6 +438,7 @@ WindowSurfaceWayland::WindowSurfaceWayla
- for (int i = 0; i < BACK_BUFFER_NUM; i++) {
- mShmBackupBuffer[i] = nullptr;
- }
-+ DelayedCommitsEnsureMutext();
- }
-
- WindowSurfaceWayland::~WindowSurfaceWayland() {
-@@ -417,12 +446,9 @@ WindowSurfaceWayland::~WindowSurfaceWayl
- NS_WARNING("Deleted WindowSurfaceWayland with a pending commit!");
- }
-
-- if (mDelayedCommitHandle) {
-- // Delete reference to this to prevent WaylandBufferDelayCommitHandler()
-- // operate on released this. mDelayedCommitHandle itself will
-- // be released at WaylandBufferDelayCommitHandler().
-- *mDelayedCommitHandle = nullptr;
-- }
-+ // Delete reference to this to prevent WaylandBufferDelayCommitHandler()
-+ // operate on released this.
-+ DelayedCommitsRemoveSurface(this);
-
- if (mFrameCallback) {
- wl_callback_destroy(mFrameCallback);
-@@ -863,23 +889,11 @@ bool WindowSurfaceWayland::CommitImageCa
- return true;
- }
-
--static void WaylandBufferDelayCommitHandler(WindowSurfaceWayland** aSurface) {
-- if (*aSurface) {
-- (*aSurface)->DelayedCommitHandler();
-- } else {
-- // Referenced WindowSurfaceWayland is already deleted.
-- // Do nothing but just release the mDelayedCommitHandle allocated at
-- // WindowSurfaceWayland::CommitWaylandBuffer().
-- free(aSurface);
-- }
--}
--
- void WindowSurfaceWayland::CommitWaylandBuffer() {
- LOGWAYLAND(("WindowSurfaceWayland::CommitWaylandBuffer [%p]\n", (void*)this));
- LOGWAYLAND(
- (" mDrawToWaylandBufferDirectly = %d\n", mDrawToWaylandBufferDirectly));
- LOGWAYLAND((" mCanSwitchWaylandBuffer = %d\n", mCanSwitchWaylandBuffer));
-- LOGWAYLAND((" mDelayedCommitHandle = %p\n", mDelayedCommitHandle));
- LOGWAYLAND((" mFrameCallback = %p\n", mFrameCallback));
- LOGWAYLAND((" mLastCommittedSurface = %p\n", mLastCommittedSurface));
- LOGWAYLAND((" mBufferPendingCommit = %d\n", mBufferPendingCommit));
-@@ -915,16 +929,13 @@ void WindowSurfaceWayland::CommitWayland
- MOZ_ASSERT(!mFrameCallback || waylandSurface != mLastCommittedSurface,
- "Missing wayland surface at frame callback!");
-
-- // Do nothing if there's already mDelayedCommitHandle pending.
-- if (!mDelayedCommitHandle) {
-- mDelayedCommitHandle = static_cast<WindowSurfaceWayland**>(
-- moz_xmalloc(sizeof(*mDelayedCommitHandle)));
-- *mDelayedCommitHandle = this;
--
-+ GList* foundCommit = g_list_find(gDelayedCommits, this);
-+ if (!foundCommit) {
-+ MutexAutoLock lock(*gDelayedCommitLock);
-+ gDelayedCommits = g_list_prepend(gDelayedCommits, this);
- MessageLoop::current()->PostDelayedTask(
- NewRunnableFunction("WaylandBackBufferCommit",
-- &WaylandBufferDelayCommitHandler,
-- mDelayedCommitHandle),
-+ &WaylandBufferDelayCommitHandler, this),
- EVENT_LOOP_DELAY);
- }
- return;
-@@ -1036,25 +1047,6 @@ void WindowSurfaceWayland::FrameCallback
-
- CommitWaylandBuffer();
- }
--
--void WindowSurfaceWayland::DelayedCommitHandler() {
-- MOZ_ASSERT(mIsMainThread == NS_IsMainThread());
-- MOZ_ASSERT(mDelayedCommitHandle != nullptr, "Missing mDelayedCommitHandle!");
--
-- LOGWAYLAND(
-- ("WindowSurfaceWayland::DelayedCommitHandler [%p]\n", (void*)this));
--
-- if (!mDelayedCommitHandle) {
-- LOGWAYLAND((" We're missing mDelayedCommitHandle!\n"));
-- return;
-- }
--
-- *mDelayedCommitHandle = nullptr;
-- free(mDelayedCommitHandle);
-- mDelayedCommitHandle = nullptr;
--
-- CommitWaylandBuffer();
--}
-
- } // 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-05 16:05:18.058494705 +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
- // and we send it to wayland compositor in FrameCallbackHandler()/
-- // DelayedCommitHandler/CommitWaylandBuffer().
-+ // CommitWaylandBuffer().
- already_AddRefed<gfx::DrawTarget> Lock(
- const LayoutDeviceIntRegion& aRegion) override;
- void Commit(const LayoutDeviceIntRegion& aInvalidRegion) final;
-@@ -171,12 +171,6 @@ class WindowSurfaceWayland : public Wind
- // queued commits.
- void FrameCallbackHandler();
-
-- // When a new window is created we may not have a valid wl_surface
-- // for drawing (Gtk haven't created it yet). All commits are queued
-- // and DelayedCommitHandler() is called by timer when wl_surface is ready
-- // for drawing.
-- void DelayedCommitHandler();
--
- // Try to commit all queued drawings to Wayland compositor. This is usually
- // called from other routines but can be used to explicitly flush
- // all drawings as we do when wl_buffer is released
-@@ -249,17 +243,14 @@ class WindowSurfaceWayland : public Wind
- wl_callback* mFrameCallback;
- wl_surface* mLastCommittedSurface;
-
-- // Registered reference to pending DelayedCommitHandler() call.
-- WindowSurfaceWayland** mDelayedCommitHandle;
--
- // Cached drawings. If we can't get WaylandBuffer (wl_buffer) at
- // WindowSurfaceWayland::Lock() we direct gecko rendering to
- // mImageSurface.
- // If we can't get WaylandBuffer at WindowSurfaceWayland::Commit()
- // time, mImageSurface is moved to mDelayedImageCommits which
- // holds all cached drawings.
-- // mDelayedImageCommits can be drawn by FrameCallbackHandler(),
-- // DelayedCommitHandler() or when WaylandBuffer is detached.
-+ // mDelayedImageCommits can be drawn by FrameCallbackHandler()
-+ // or when WaylandBuffer is detached.
- RefPtr<gfxImageSurface> mImageSurface;
- AutoTArray<WindowImageSurface, 30> mDelayedImageCommits;
-
-@@ -282,8 +273,8 @@ class WindowSurfaceWayland : public Wind
- // We can't send WaylandBuffer (wl_buffer) to compositor when gecko
- // is rendering into it (i.e. between WindowSurfaceWayland::Lock() /
- // WindowSurfaceWayland::Commit()).
-- // Thus we use mBufferCommitAllowed to disable commit by callbacks
-- // (FrameCallbackHandler(), DelayedCommitHandler())
-+ // Thus we use mBufferCommitAllowed to disable commit by
-+ // CommitWaylandBuffer().
- bool mBufferCommitAllowed;
-
- // We need to clear WaylandBuffer when entire transparent window is repainted.
bgstack15