diff options
author | Ewout van Mansom | 2023-04-28 18:24:44 +0200 |
---|---|---|
committer | Ewout van Mansom | 2023-04-28 18:24:44 +0200 |
commit | ed1eaf0c8a63f5ea861c7e044d323379e621d88d (patch) | |
tree | a53f08831cb148cea0c802dea65bd9f5867a74a2 | |
parent | 4417c79fba8e9390465c8a0e037efabd96aa82ab (diff) | |
download | aur-ed1eaf0c8a63f5ea861c7e044d323379e621d88d.tar.gz |
include wayland patch for bug #1803016
-rw-r--r-- | .SRCINFO | 7 | ||||
-rw-r--r-- | 0001-Bug-1803016-Wayland-Don-t-commit-wl_buffer-if-buffer.patch | 81 | ||||
-rw-r--r-- | 0002-enable-vaapi.patch (renamed from 0001-enable-vaapi.patch) | 0 | ||||
-rw-r--r-- | PKGBUILD | 12 |
4 files changed, 95 insertions, 5 deletions
@@ -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 @@ -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 |