summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorEwout van Mansom2023-04-28 18:24:44 +0200
committerEwout van Mansom2023-04-28 18:24:44 +0200
commited1eaf0c8a63f5ea861c7e044d323379e621d88d (patch)
treea53f08831cb148cea0c802dea65bd9f5867a74a2
parent4417c79fba8e9390465c8a0e037efabd96aa82ab (diff)
downloadaur-ed1eaf0c8a63f5ea861c7e044d323379e621d88d.tar.gz
include wayland patch for bug #1803016
-rw-r--r--.SRCINFO7
-rw-r--r--0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch81
-rw-r--r--0002-enable-vaapi.patch (renamed from 0001-enable-vaapi.patch)0
-rw-r--r--PKGBUILD12
4 files changed, 95 insertions, 5 deletions
diff --git a/.SRCINFO b/.SRCINFO
index e4c4f677c8f8..fd77942e7f17 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = firefox-vaapi
pkgdesc = Standalone web browser from mozilla.org (with VA-API patches)
pkgver = 112.0.2
- pkgrel = 1
+ pkgrel = 2
url = https://www.mozilla.org/firefox/
arch = x86_64
license = GPL
@@ -54,17 +54,20 @@ pkgbase = firefox-vaapi
source = https://archive.mozilla.org/pub/firefox/releases/112.0.2/source/firefox-112.0.2.source.tar.xz.asc
source = firefox.desktop
source = identity-icons-brand.svg
- source = 0001-enable-vaapi.patch
+ source = 0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch
+ source = 0002-enable-vaapi.patch
validpgpkeys = 14F26682D0916CDD81E37B6D61B7B526D98F0353
sha256sums = e6a4819a3b82b1ca6c45296e50e6c9ab653306eeb540e50ba8683e339565992e
sha256sums = SKIP
sha256sums = 298eae9de76ec53182f38d5c549d0379569916eebf62149f9d7f4a7edef36abf
sha256sums = a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9
+ sha256sums = bfe15651a99ac6d0037867c9db00a0d4340353cdc0ac4a39e43ad61cc2589ed6
sha256sums = b1298c8e9dbaa3a9af04538a80f4c592394fe702c9a4380f8ff71b1795194667
b2sums = 44f2fae6c7260a1a6cad24ee31bbd52bc7efad15ac5b9f64f4bceabda7a371f20a490512cee324e53373b9a96fd218572c1478b76e5931383dbef00cc25743aa
b2sums = SKIP
b2sums = e18f2c22e394ca3b6758bc130245b254947e4d15921be3da443d6d7c3c4b0d22ead1b39fbc10a4f896edd19e2a1dffbd1cbb34dc4beb0621a6ddb70ccc53b3a7
b2sums = 63a8dd9d8910f9efb353bed452d8b4b2a2da435857ccee083fc0c557f8c4c1339ca593b463db320f70387a1b63f1a79e709e9d12c69520993e26d85a3d742e34
+ b2sums = ab11b185f32da7a10c22a075d2bf16adadfcfc2d197fc88bd61a03d1873d5cd914cd96edf8af9f054a3cab12629f3f5c29d70d0dce0f0f4bef85f1cfc5a219ee
b2sums = 8a22ba0ff1263dd68d3506c300d81da9d32660a575bd5af1e315f7303e21bcfce42b4e60d09f5f9e1d4104d99e53c2ad097ef3a4a37c552b85cd717114413b4f
pkgname = firefox-vaapi
diff --git a/0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch b/0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch
new file mode 100644
index 000000000000..37333e253618
--- /dev/null
+++ b/0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch
@@ -0,0 +1,81 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: stransky <stransky@redhat.com>
+Date: Thu, 30 Mar 2023 11:49:53 +0000
+Subject: [PATCH] Bug 1803016 [Wayland] Don't commit wl_buffer if buffer scale
+ doesn't match its size r=emilio
+
+Differential Revision: https://phabricator.services.mozilla.com/D173814
+---
+ widget/gtk/MozContainerWayland.cpp | 7 +++++++
+ widget/gtk/MozContainerWayland.h | 3 +++
+ widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp | 17 ++++++++++++++---
+ 3 files changed, 24 insertions(+), 3 deletions(-)
+
+diff --git a/widget/gtk/MozContainerWayland.cpp b/widget/gtk/MozContainerWayland.cpp
+index 2a4a492077c3..0d9aacc954b7 100644
+--- a/widget/gtk/MozContainerWayland.cpp
++++ b/widget/gtk/MozContainerWayland.cpp
+@@ -597,6 +597,13 @@ void moz_container_wayland_set_scale_factor(MozContainer* container) {
+ }
+ }
+
++bool moz_container_wayland_size_matches_scale_factor_locked(
++ const MutexAutoLock& aProofOfLock, MozContainer* container, int aWidth,
++ int aHeight) {
++ return aWidth % container->wl_container.buffer_scale == 0 &&
++ aHeight % container->wl_container.buffer_scale == 0;
++}
++
+ static bool moz_container_wayland_surface_create_locked(
+ const MutexAutoLock& aProofOfLock, MozContainer* container) {
+ MozContainerWayland* wl_container = &container->wl_container;
+diff --git a/widget/gtk/MozContainerWayland.h b/widget/gtk/MozContainerWayland.h
+index d3c49baae8ac..369d40a55250 100644
+--- a/widget/gtk/MozContainerWayland.h
++++ b/widget/gtk/MozContainerWayland.h
+@@ -85,6 +85,9 @@ bool moz_container_wayland_egl_window_needs_size_update(MozContainer* container,
+ void moz_container_wayland_set_scale_factor(MozContainer* container);
+ void moz_container_wayland_set_scale_factor_locked(
+ const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container);
++bool moz_container_wayland_size_matches_scale_factor_locked(
++ const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container,
++ int aWidth, int aHeight);
+
+ void moz_container_wayland_add_initial_draw_callback_locked(
+ MozContainer* container, const std::function<void(void)>& initial_draw_cb);
+diff --git a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
+index 85ab1942d9e6..31091f4b9848 100644
+--- a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
++++ b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
+@@ -285,8 +285,8 @@ void WindowSurfaceWaylandMB::Commit(
+ mFrameInProcess = false;
+
+ MozContainer* container = mWindow->GetMozContainer();
+- MozContainerSurfaceLock lock(container);
+- struct wl_surface* waylandSurface = lock.GetSurface();
++ MozContainerSurfaceLock MozContainerLock(container);
++ struct wl_surface* waylandSurface = MozContainerLock.GetSurface();
+ if (!waylandSurface) {
+ LOGWAYLAND(
+ "WindowSurfaceWaylandMB::Commit [%p] frame queued: can't lock "
+@@ -319,8 +319,19 @@ void WindowSurfaceWaylandMB::Commit(
+ }
+ }
+
++ // aProofOfLock is a kind of substitution of MozContainerSurfaceLock.
++ // MozContainer is locked but MozContainerSurfaceLock doen't convert to
++ // MutexAutoLock& so we use aProofOfLock here.
+ moz_container_wayland_set_scale_factor_locked(aProofOfLock, container);
+- mInProgressBuffer->AttachAndCommit(waylandSurface);
++
++ // It's possible that scale factor changed between Lock() and Commit()
++ // but window size is the same.
++ // Don't attach such buffer as it may have incorrect size,
++ // we'll paint new content soon.
++ if (moz_container_wayland_size_matches_scale_factor_locked(
++ aProofOfLock, container, mWindowSize.width, mWindowSize.height)) {
++ mInProgressBuffer->AttachAndCommit(waylandSurface);
++ }
+
+ mInProgressBuffer->ResetBufferAge();
+ mFrontBuffer = mInProgressBuffer;
diff --git a/0001-enable-vaapi.patch b/0002-enable-vaapi.patch
index dbe92bc2e21a..dbe92bc2e21a 100644
--- a/0001-enable-vaapi.patch
+++ b/0002-enable-vaapi.patch
diff --git a/PKGBUILD b/PKGBUILD
index 0e084af3de04..c1b76fd8f0c8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,7 +6,7 @@
pkgname=firefox-vaapi
_pkgname=firefox
pkgver=112.0.2
-pkgrel=1
+pkgrel=2
pkgdesc="Standalone web browser from mozilla.org (with VA-API patches)"
url="https://www.mozilla.org/firefox/"
arch=(x86_64)
@@ -70,7 +70,8 @@ source=(
https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc}
$_pkgname.desktop
identity-icons-brand.svg
- 0001-enable-vaapi.patch
+ 0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch
+ 0002-enable-vaapi.patch
)
validpgpkeys=(
'14F26682D0916CDD81E37B6D61B7B526D98F0353' # Mozilla Software Releases <release@mozilla.com>
@@ -79,11 +80,13 @@ sha256sums=('e6a4819a3b82b1ca6c45296e50e6c9ab653306eeb540e50ba8683e339565992e'
'SKIP'
'298eae9de76ec53182f38d5c549d0379569916eebf62149f9d7f4a7edef36abf'
'a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9'
+ 'bfe15651a99ac6d0037867c9db00a0d4340353cdc0ac4a39e43ad61cc2589ed6'
'b1298c8e9dbaa3a9af04538a80f4c592394fe702c9a4380f8ff71b1795194667')
b2sums=('44f2fae6c7260a1a6cad24ee31bbd52bc7efad15ac5b9f64f4bceabda7a371f20a490512cee324e53373b9a96fd218572c1478b76e5931383dbef00cc25743aa'
'SKIP'
'e18f2c22e394ca3b6758bc130245b254947e4d15921be3da443d6d7c3c4b0d22ead1b39fbc10a4f896edd19e2a1dffbd1cbb34dc4beb0621a6ddb70ccc53b3a7'
'63a8dd9d8910f9efb353bed452d8b4b2a2da435857ccee083fc0c557f8c4c1339ca593b463db320f70387a1b63f1a79e709e9d12c69520993e26d85a3d742e34'
+ 'ab11b185f32da7a10c22a075d2bf16adadfcfc2d197fc88bd61a03d1873d5cd914cd96edf8af9f054a3cab12629f3f5c29d70d0dce0f0f4bef85f1cfc5a219ee'
'8a22ba0ff1263dd68d3506c300d81da9d32660a575bd5af1e315f7303e21bcfce42b4e60d09f5f9e1d4104d99e53c2ad097ef3a4a37c552b85cd717114413b4f')
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
@@ -102,10 +105,13 @@ prepare() {
mkdir mozbuild
cd firefox-$pkgver
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1803016
+ patch -Np1 -i ../0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch
+
# https://bugzilla.mozilla.org/show_bug.cgi?id=1809068
# https://bbs.archlinux.org/viewtopic.php?id=281398
# https://src.fedoraproject.org/rpms/firefox/blob/rawhide/f/firefox-enable-vaapi.patch
- patch -Np1 -i ../0001-enable-vaapi.patch
+ patch -Np1 -i ../0002-enable-vaapi.patch
echo -n "$_google_api_key" >google-api-key
echo -n "$_mozilla_api_key" >mozilla-api-key