aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/bsd.gecko.mk4
-rw-r--r--www/firefox/Makefile13
-rw-r--r--www/firefox/distinfo6
-rw-r--r--www/firefox/files/patch-bug159402733
-rw-r--r--www/firefox/files/patch-bug1607052281
-rw-r--r--www/firefox/files/patch-bug1612377210
-rw-r--r--www/firefox/files/patch-bug1619258101
7 files changed, 323 insertions, 325 deletions
diff --git a/Mk/bsd.gecko.mk b/Mk/bsd.gecko.mk
index de19143a02cb..7ccae4f38771 100644
--- a/Mk/bsd.gecko.mk
+++ b/Mk/bsd.gecko.mk
@@ -76,8 +76,8 @@ LDFLAGS+= -Wl,--as-needed
BUNDLE_LIBS= yes
BUILD_DEPENDS+= llvm${LLVM_DEFAULT}>0:devel/llvm${LLVM_DEFAULT} \
- rust-cbindgen>=0.13.0:devel/rust-cbindgen \
- ${RUST_DEFAULT}>=1.39:lang/${RUST_DEFAULT} \
+ rust-cbindgen>=0.13.1:devel/rust-cbindgen \
+ ${RUST_DEFAULT}>=1.41:lang/${RUST_DEFAULT} \
${LOCALBASE}/bin/python${PYTHON3_DEFAULT}:lang/python${PYTHON3_DEFAULT:S/.//g} \
node:www/node
MOZ_EXPORT+= ${CONFIGURE_ENV} \
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 9af65745aee5..98dbab5c1f91 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -2,33 +2,34 @@
# $FreeBSD$
PORTNAME= firefox
-DISTVERSION= 74.0
-PORTREVISION= 6
+DISTVERSION= 75.0
PORTEPOCH= 1
CATEGORIES= www
MASTER_SITES= MOZILLA/${PORTNAME}/releases/${DISTVERSION}/source \
- MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build3/source
+ MOZILLA/${PORTNAME}/candidates/${DISTVERSION}-candidates/build1/source
DISTFILES= ${DISTNAME}.source${EXTRACT_SUFX}
MAINTAINER= gecko@FreeBSD.org
COMMENT= Web browser based on the browser portion of Mozilla
BUILD_DEPENDS= nspr>=4.25:devel/nspr \
- nss>=3.50:security/nss \
+ nss>=3.51:security/nss \
icu>=64.1,1:devel/icu \
libevent>=2.1.8:devel/libevent \
harfbuzz>=2.6.4:print/harfbuzz \
graphite2>=1.3.13:graphics/graphite2 \
png>=1.6.35:graphics/png \
- libvpx>=1.5.0:multimedia/libvpx \
+ libvpx>=1.8.2:multimedia/libvpx \
+ py${PYTHON3_DEFAULT:S/.//}-sqlite3>0:databases/py-sqlite3@py${PYTHON3_DEFAULT:S/.//} \
v4l_compat>0:multimedia/v4l_compat \
autoconf-2.13:devel/autoconf213 \
nasm:devel/nasm \
+ yasm:devel/yasm \
zip:archivers/zip
USE_GECKO= gecko
CONFLICTS_INSTALL= firefox-esr
-USE_MOZILLA= -sqlite -vpx
+USE_MOZILLA= -sqlite
USES= tar:xz
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 23e1c5e54036..2b0839e80ffe 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1583759447
-SHA256 (firefox-74.0.source.tar.xz) = 74589c2836d7c30134636823c3caefbcaed0ea7c3abb2def9e3ddd9f86d9440a
-SIZE (firefox-74.0.source.tar.xz) = 320001124
+TIMESTAMP = 1585679097
+SHA256 (firefox-75.0.source.tar.xz) = a8eefcc4dca2d90ffac24ecd307eecde912b1cf3d5dc0207b18c9f3eeaca3747
+SIZE (firefox-75.0.source.tar.xz) = 322506492
diff --git a/www/firefox/files/patch-bug1594027 b/www/firefox/files/patch-bug1594027
deleted file mode 100644
index 98a949764b6b..000000000000
--- a/www/firefox/files/patch-bug1594027
+++ /dev/null
@@ -1,33 +0,0 @@
-commit 9949bb054e7a
-Author: Greg V <greg@unrelenting.technology>
-Date: Mon Feb 24 20:18:01 2020 +0000
-
- Bug 1594027 - add more STL wrappers to fix build with libc++ 9 r=froydnj
-
- Differential Revision: https://phabricator.services.mozilla.com/D62847
-
- --HG--
- extra : moz-landing-system : lando
----
- config/gcc-stl-wrapper.template.h | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git config/gcc-stl-wrapper.template.h config/gcc-stl-wrapper.template.h
-index 41ae14024b0c0..9fe70fbaab8dc 100644
---- config/gcc-stl-wrapper.template.h
-+++ config/gcc-stl-wrapper.template.h
-@@ -32,6 +32,14 @@
- # define moz_dont_include_mozalloc_for_cstdlib
- #endif
-
-+#ifndef moz_dont_include_mozalloc_for_type_traits
-+# define moz_dont_include_mozalloc_for_type_traits
-+#endif
-+
-+#ifndef moz_dont_include_mozalloc_for_limits
-+# define moz_dont_include_mozalloc_for_limits
-+#endif
-+
- // Include mozalloc after the STL header and all other headers it includes
- // have been preprocessed.
- #if !defined(MOZ_INCLUDE_MOZALLOC_H) && \
diff --git a/www/firefox/files/patch-bug1607052 b/www/firefox/files/patch-bug1607052
deleted file mode 100644
index a275962ac96b..000000000000
--- a/www/firefox/files/patch-bug1607052
+++ /dev/null
@@ -1,281 +0,0 @@
-commit 9d26727a4e85
-Author: Zibi Braniecki <zbraniecki@mozilla.com>
-Date: Fri Feb 21 00:39:18 2020 +0000
-
- Bug 1607052 - Unify language identifier canonicalization in LocaleService and OSPreferences to use unic_langid, and extend GTK's RegionalPrefs reading to fallback on SystemLocales. r=jfkthame
-
- Differential Revision: https://phabricator.services.mozilla.com/D63393
-
- --HG--
- extra : moz-landing-system : lando
----
- intl/locale/LocaleService.cpp | 53 ++-------------------------
- intl/locale/LocaleService.h | 18 +++++++++
- intl/locale/OSPreferences.cpp | 18 ++-------
- intl/locale/rust/unic-langid-ffi/src/lib.rs | 33 ++++++++++++++---
- intl/locale/tests/gtest/TestLocaleService.cpp | 23 ++++++++++++
- intl/locale/tests/unit/test_localeService.js | 3 +-
- 6 files changed, 77 insertions(+), 71 deletions(-)
-
-diff --git intl/locale/LocaleService.cpp intl/locale/LocaleService.cpp
-index f7e13e36ccbc7..6708c4af4b5c3 100644
---- intl/locale/LocaleService.cpp
-+++ intl/locale/LocaleService.cpp
-@@ -39,51 +39,6 @@ NS_IMPL_ISUPPORTS(LocaleService, mozILocaleService, nsIObserver,
-
- mozilla::StaticRefPtr<LocaleService> LocaleService::sInstance;
-
--/**
-- * This function transforms a canonical Mozilla Language Tag, into it's
-- * BCP47 compilant form.
-- *
-- * Example: "ja-JP-mac" -> "ja-JP-macos"
-- *
-- * The BCP47 form should be used for all calls to ICU/Intl APIs.
-- * The canonical form is used for all internal operations.
-- */
--static bool SanitizeForBCP47(nsACString& aLocale, bool strict) {
-- // Currently, the only locale code we use that's not BCP47-conformant is
-- // "ja-JP-mac" on OS X, and ICU canonicalizes it into a mouthfull
-- // "ja-JP-x-lvariant-mac", so instead we're hardcoding a conversion
-- // of it to "ja-JP-macos".
-- if (aLocale.LowerCaseEqualsASCII("ja-jp-mac")) {
-- aLocale.AssignLiteral("ja-JP-macos");
-- return true;
-- }
--
-- nsAutoCString locale(aLocale);
-- locale.Trim(" ");
--
-- // POSIX may bring us locales such as "en-US.UTF8", which
-- // ICU converts to `en-US-u-va-posix`. Let's cut out
-- // the `.UTF8`, since it doesn't matter for us.
-- int32_t pos = locale.FindChar('.');
-- if (pos != -1) {
-- locale.Cut(pos, locale.Length() - pos);
-- }
--
-- // The rest of this function will use ICU canonicalization for any other
-- // tag that may come this way.
-- const int32_t LANG_TAG_CAPACITY = 128;
-- char langTag[LANG_TAG_CAPACITY];
-- UErrorCode err = U_ZERO_ERROR;
-- // This is a fail-safe method that will set langTag to "und" if it cannot
-- // match any part of the input locale code.
-- int32_t len = uloc_toLanguageTag(locale.get(), langTag, LANG_TAG_CAPACITY,
-- strict, &err);
-- if (U_SUCCESS(err) && len > 0) {
-- aLocale.Assign(langTag, len);
-- }
-- return U_SUCCESS(err);
--}
--
- /**
- * This function splits an input string by `,` delimiter, sanitizes the result
- * language tags and returns them to the caller.
-@@ -93,7 +48,7 @@ static void SplitLocaleListStringIntoArray(nsACString& str,
- if (str.Length() > 0) {
- for (const nsACString& part : str.Split(',')) {
- nsAutoCString locale(part);
-- if (SanitizeForBCP47(locale, true)) {
-+ if (LocaleService::CanonicalizeLanguageId(locale)) {
- if (!aRetVal.Contains(locale)) {
- aRetVal.AppendElement(locale);
- }
-@@ -421,7 +376,7 @@ LocaleService::GetDefaultLocale(nsACString& aRetVal) {
- locale.Trim(" \t\n\r");
- // This should never be empty.
- MOZ_ASSERT(!locale.IsEmpty());
-- if (SanitizeForBCP47(locale, true)) {
-+ if (CanonicalizeLanguageId(locale)) {
- mDefaultLocale.Assign(locale);
- }
-
-@@ -617,7 +572,7 @@ LocaleService::SetRequestedLocales(const nsTArray<nsCString>& aRequested) {
-
- for (auto& req : aRequested) {
- nsAutoCString locale(req);
-- if (!SanitizeForBCP47(locale, true)) {
-+ if (!CanonicalizeLanguageId(locale)) {
- NS_ERROR("Invalid language tag provided to SetRequestedLocales!");
- return NS_ERROR_INVALID_ARG;
- }
-@@ -667,7 +622,7 @@ LocaleService::SetAvailableLocales(const nsTArray<nsCString>& aAvailable) {
-
- for (auto& avail : aAvailable) {
- nsAutoCString locale(avail);
-- if (!SanitizeForBCP47(locale, true)) {
-+ if (!CanonicalizeLanguageId(locale)) {
- NS_ERROR("Invalid language tag provided to SetAvailableLocales!");
- return NS_ERROR_INVALID_ARG;
- }
-diff --git intl/locale/LocaleService.h intl/locale/LocaleService.h
-index 2ff428da3e3fd..5f5152c1fbb7a 100644
---- intl/locale/LocaleService.h
-+++ intl/locale/LocaleService.h
-@@ -10,6 +10,7 @@
- #include "nsString.h"
- #include "nsTArray.h"
- #include "nsWeakReference.h"
-+#include "MozLocaleBindings.h"
-
- #include "mozILocaleService.h"
-
-@@ -104,6 +105,23 @@ class LocaleService final : public mozILocaleService,
- return RefPtr<LocaleService>(GetInstance()).forget();
- }
-
-+ /**
-+ * Canonicalize a Unicode Language Identifier string.
-+ *
-+ * The operation is:
-+ * * Normalizing casing (`eN-Us-Windows` -> `en-US-windows`)
-+ * * Switching `_` to `-` (`en_US` -> `en-US`)
-+ * * Rejecting invalid identifiers (`e21-X` sets aLocale to `und` and
-+ * returns false)
-+ * * Normalizing Mozilla's `ja-JP-mac` to `ja-JP-macos`
-+ * * Cutting off POSIX dot postfix (`en-US.utf8` -> `en-US`)
-+ *
-+ * This operation should be used on any external input before
-+ * it gets used in internal operations.
-+ */
-+ static bool CanonicalizeLanguageId(nsACString& aLocale) {
-+ return ffi::unic_langid_canonicalize(&aLocale);
-+ }
- /**
- * This method should only be called in the client mode.
- *
-diff --git intl/locale/OSPreferences.cpp intl/locale/OSPreferences.cpp
-index 283db96e0d718..f816ca57abfea 100644
---- intl/locale/OSPreferences.cpp
-+++ intl/locale/OSPreferences.cpp
-@@ -54,19 +54,7 @@ void OSPreferences::Refresh() {
- * It returns true if the canonicalization was successful.
- */
- bool OSPreferences::CanonicalizeLanguageTag(nsCString& aLoc) {
-- char langTag[512];
--
-- UErrorCode status = U_ZERO_ERROR;
--
-- int32_t langTagLen = uloc_toLanguageTag(aLoc.get(), langTag,
-- sizeof(langTag) - 1, false, &status);
--
-- if (U_FAILURE(status)) {
-- return false;
-- }
--
-- aLoc.Assign(langTag, langTagLen);
-- return true;
-+ return LocaleService::CanonicalizeLanguageId(aLoc);
- }
-
- /**
-@@ -291,7 +279,9 @@ OSPreferences::GetRegionalPrefsLocales(nsTArray<nsCString>& aRetVal) {
- return NS_OK;
- }
-
-- return NS_ERROR_FAILURE;
-+ // If we failed to read regional prefs locales,
-+ // use system locales as last fallback.
-+ return GetSystemLocales(aRetVal);
- }
-
- static OSPreferences::DateTimeFormatStyle ToDateTimeFormatStyle(
-diff --git intl/locale/rust/unic-langid-ffi/src/lib.rs intl/locale/rust/unic-langid-ffi/src/lib.rs
-index 701d3679c4cec..517e08c1a64c1 100644
---- intl/locale/rust/unic-langid-ffi/src/lib.rs
-+++ intl/locale/rust/unic-langid-ffi/src/lib.rs
-@@ -5,18 +5,39 @@
- use nsstring::nsACString;
- use nsstring::nsCString;
- use thin_vec::ThinVec;
--pub use unic_langid::LanguageIdentifier;
-+pub use unic_langid::{LanguageIdentifier, LanguageIdentifierError};
-+
-+fn new_langid_for_mozilla(name: &nsACString) -> Result<LanguageIdentifier, LanguageIdentifierError> {
-+ if name.eq_ignore_ascii_case(b"ja-jp-mac") {
-+ "ja-JP-macos".parse()
-+ } else {
-+ // Cut out any `.FOO` like `en-US.POSIX`.
-+ let mut name: &[u8] = name.as_ref();
-+ if let Some(ptr) = name.iter().position(|b| b == &b'.') {
-+ name = &name[..ptr];
-+ }
-+ LanguageIdentifier::from_bytes(name)
-+ }
-+}
-+
-+#[no_mangle]
-+pub unsafe extern "C" fn unic_langid_canonicalize(name: &mut nsACString) -> bool {
-+ let langid = new_langid_for_mozilla(name);
-+
-+ let result = langid.is_ok();
-+
-+ name.assign(&langid.unwrap_or_default().to_string());
-+
-+ result
-+}
-+
-
- #[no_mangle]
- pub unsafe extern "C" fn unic_langid_new(
- name: &nsACString,
- ret_val: &mut bool,
- ) -> *mut LanguageIdentifier {
-- let langid = if name.eq_ignore_ascii_case(b"ja-jp-mac") {
-- "ja-JP-macos".parse()
-- } else {
-- LanguageIdentifier::from_bytes(name)
-- };
-+ let langid = new_langid_for_mozilla(name);
-
- *ret_val = langid.is_ok();
- Box::into_raw(Box::new(langid.unwrap_or_default()))
-diff --git intl/locale/tests/gtest/TestLocaleService.cpp intl/locale/tests/gtest/TestLocaleService.cpp
-index b13ecfd237dfa..aaac8615b09fd 100644
---- intl/locale/tests/gtest/TestLocaleService.cpp
-+++ intl/locale/tests/gtest/TestLocaleService.cpp
-@@ -10,6 +10,29 @@
-
- using namespace mozilla::intl;
-
-+TEST(Intl_Locale_LocaleService, CanonicalizeLanguageId)
-+{
-+ nsCString locale("en-US.POSIX");
-+ ASSERT_TRUE(LocaleService::CanonicalizeLanguageId(locale));
-+ ASSERT_TRUE(locale.EqualsLiteral("en-US"));
-+
-+ locale.AssignLiteral("en-US_POSIX");
-+ ASSERT_TRUE(LocaleService::CanonicalizeLanguageId(locale));
-+ ASSERT_TRUE(locale.EqualsLiteral("en-US-posix"));
-+
-+ locale.AssignLiteral("en-US-POSIX");
-+ ASSERT_TRUE(LocaleService::CanonicalizeLanguageId(locale));
-+ ASSERT_TRUE(locale.EqualsLiteral("en-US-posix"));
-+
-+ locale.AssignLiteral("C");
-+ ASSERT_FALSE(LocaleService::CanonicalizeLanguageId(locale));
-+ ASSERT_TRUE(locale.EqualsLiteral("und"));
-+
-+ locale.AssignLiteral("");
-+ ASSERT_FALSE(LocaleService::CanonicalizeLanguageId(locale));
-+ ASSERT_TRUE(locale.EqualsLiteral("und"));
-+}
-+
- TEST(Intl_Locale_LocaleService, GetAppLocalesAsBCP47)
- {
- nsTArray<nsCString> appLocales;
-diff --git intl/locale/tests/unit/test_localeService.js intl/locale/tests/unit/test_localeService.js
-index 1970ae94b2607..202c2674972a8 100644
---- intl/locale/tests/unit/test_localeService.js
-+++ intl/locale/tests/unit/test_localeService.js
-@@ -204,8 +204,7 @@ add_test(function test_requestedLocales_sanitize() {
- Assert.equal(locales[0], "de");
- Assert.equal(locales[1], "pl");
- Assert.equal(locales[2], "de-AT");
-- Assert.equal(locales[3], "und");
-- Assert.equal(locales.length, 4);
-+ Assert.equal(locales.length, 3);
-
- Services.prefs.clearUserPref(PREF_REQUESTED_LOCALES);
-
diff --git a/www/firefox/files/patch-bug1612377 b/www/firefox/files/patch-bug1612377
new file mode 100644
index 000000000000..fbcb361fb3af
--- /dev/null
+++ b/www/firefox/files/patch-bug1612377
@@ -0,0 +1,210 @@
+commit f30e2a9e31fa
+Author: Martin Stransky <stransky@redhat.com>
+Date: Thu Mar 26 12:12:40 2020 +0000
+
+ Bug 1612377 [Wayland] Remove moz_container_set_accelerated(), r=jhorak
+
+ Differential Revision: https://phabricator.services.mozilla.com/D68351
+
+ --HG--
+ extra : moz-landing-system : lando
+---
+ widget/gtk/mozcontainer.cpp | 7 +------
+ widget/gtk/mozcontainer.h | 2 --
+ widget/gtk/nsWindow.cpp | 1 -
+ 3 files changed, 1 insertion(+), 9 deletions(-)
+
+diff --git widget/gtk/mozcontainer.cpp widget/gtk/mozcontainer.cpp
+index 0c3833bc8ce3e..d438b67f9baea 100644
+--- widget/gtk/mozcontainer.cpp
++++ widget/gtk/mozcontainer.cpp
+@@ -230,7 +230,6 @@ void moz_container_init(MozContainer* container) {
+ container->subsurface_dy = 0;
+ container->surface_position_needs_update = 0;
+ container->initial_draw_cbs.clear();
+- container->is_accelerated = false;
+ #endif
+
+ LOG(("%s [%p]\n", __FUNCTION__, (void*)container));
+@@ -694,14 +693,10 @@ void moz_container_update_opaque_region(MozContainer* container,
+ // When GL compositor / WebRender is used,
+ // moz_container_get_wl_egl_window() is called only once when window
+ // is created or resized so update opaque region now.
+- if (container->is_accelerated) {
++ if (moz_container_has_wl_egl_window(container)) {
+ moz_container_set_opaque_region(container);
+ }
+ }
+-
+-void moz_container_set_accelerated(MozContainer* container) {
+- container->is_accelerated = true;
+-}
+ #endif
+
+ void moz_container_force_default_visual(MozContainer* container) {
+diff --git widget/gtk/mozcontainer.h widget/gtk/mozcontainer.h
+index 6befb992515dc..885dce5c27a1a 100644
+--- widget/gtk/mozcontainer.h
++++ widget/gtk/mozcontainer.h
+@@ -87,7 +87,6 @@ struct _MozContainer {
+ gboolean surface_needs_clear;
+ gboolean ready_to_draw;
+ std::vector<std::function<void(void)>> initial_draw_cbs;
+- gboolean is_accelerated;
+ #endif
+ gboolean force_default_visual;
+ };
+@@ -121,7 +120,6 @@ wl_surface* moz_gtk_widget_get_wl_surface(GtkWidget* aWidget);
+ void moz_container_update_opaque_region(MozContainer* container,
+ bool aSubtractCorners,
+ bool aFullScreen);
+-void moz_container_set_accelerated(MozContainer* container);
+ #endif
+
+ #endif /* __MOZ_CONTAINER_H__ */
+diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
+index 728c1ed7d3226..dbcd8b8ae4941 100644
+--- widget/gtk/nsWindow.cpp
++++ widget/gtk/nsWindow.cpp
+@@ -4138,7 +4138,6 @@ nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent,
+ self->mNeedsCompositorResume = true;
+ self->MaybeResumeCompositor();
+ });
+- moz_container_set_accelerated(mContainer);
+ }
+ #endif
+
+
+commit 4d1730dd79f9
+Author: Martin Stransky <stransky@redhat.com>
+Date: Thu Mar 26 12:12:48 2020 +0000
+
+ Bug 1612377 [Wayland] Update opaque region and widget scale factor when screen DPI changes, r=jhorak
+
+ - Integrate scale factor setup to moz_container_get_wl_surface() and don't call it explicitly.
+ - No need to set it explicitly at nsWindow::GetWaylandSurface().
+ - Update client offset when scale changes in CSD mode by UpdateClientOffsetFromCSDWindow().
+ - Update scale factor/opaque region on EGL immediately.
+
+ Differential Revision: https://phabricator.services.mozilla.com/D68352
+
+ --HG--
+ extra : moz-landing-system : lando
+---
+ widget/gtk/mozcontainer.cpp | 19 ++++++++++++++++++-
+ widget/gtk/mozcontainer.h | 3 +--
+ widget/gtk/nsWindow.cpp | 29 ++++++++++++++++++++++-------
+ 3 files changed, 41 insertions(+), 10 deletions(-)
+
+diff --git widget/gtk/mozcontainer.cpp widget/gtk/mozcontainer.cpp
+index d438b67f9baea..eff25264d5678 100644
+--- widget/gtk/mozcontainer.cpp
++++ widget/gtk/mozcontainer.cpp
+@@ -595,6 +595,22 @@ static void moz_container_set_opaque_region(MozContainer* container) {
+ container->opaque_region_needs_update = false;
+ }
+
++static int moz_gtk_widget_get_scale_factor(MozContainer* container) {
++ static auto sGtkWidgetGetScaleFactor =
++ (gint(*)(GtkWidget*))dlsym(RTLD_DEFAULT, "gtk_widget_get_scale_factor");
++ return sGtkWidgetGetScaleFactor
++ ? sGtkWidgetGetScaleFactor(GTK_WIDGET(container))
++ : 1;
++}
++
++void moz_container_set_scale_factor(MozContainer* container) {
++ if (!container->surface) {
++ return;
++ }
++ wl_surface_set_buffer_scale(container->surface,
++ moz_gtk_widget_get_scale_factor(container));
++}
++
+ struct wl_surface* moz_container_get_wl_surface(MozContainer* container) {
+ LOGWAYLAND(("%s [%p] surface %p ready_to_draw %d\n", __FUNCTION__,
+ (void*)container, (void*)container->surface,
+@@ -645,6 +661,8 @@ struct wl_surface* moz_container_get_wl_surface(MozContainer* container) {
+ }
+
+ moz_container_set_opaque_region(container);
++ moz_container_set_scale_factor(container);
++
+ return container->surface;
+ }
+
+@@ -659,7 +677,6 @@ struct wl_egl_window* moz_container_get_wl_egl_window(MozContainer* container,
+ if (!surface) {
+ return nullptr;
+ }
+- wl_surface_set_buffer_scale(surface, scale);
+ if (!container->eglwindow) {
+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(container));
+ container->eglwindow =
+diff --git widget/gtk/mozcontainer.h widget/gtk/mozcontainer.h
+index 885dce5c27a1a..8d40560cf634b 100644
+--- widget/gtk/mozcontainer.h
++++ widget/gtk/mozcontainer.h
+@@ -112,8 +112,7 @@ void moz_container_move_resize(MozContainer* container, int dx, int dy,
+ int width, int height);
+ void moz_container_egl_window_set_size(MozContainer* container, int width,
+ int height);
+-void moz_container_scale_changed(MozContainer* container,
+- GtkAllocation* aAllocation);
++void moz_container_set_scale_factor(MozContainer* container);
+ void moz_container_add_initial_draw_callback(
+ MozContainer* container, const std::function<void(void)>& initial_draw_cb);
+ wl_surface* moz_gtk_widget_get_wl_surface(GtkWidget* aWidget);
+diff --git widget/gtk/nsWindow.cpp widget/gtk/nsWindow.cpp
+index dbcd8b8ae4941..be9c29a02ba32 100644
+--- widget/gtk/nsWindow.cpp
++++ widget/gtk/nsWindow.cpp
+@@ -2713,7 +2713,7 @@ gboolean nsWindow::OnConfigureEvent(GtkWidget* aWidget,
+ OnSizeAllocate(&allocation);
+ }
+
+- // Client offset are upated by _NET_FRAME_EXTENTS on X11 when system titlebar
++ // Client offset are updated by _NET_FRAME_EXTENTS on X11 when system titlebar
+ // is enabled. In ither cases (Wayland or system titlebar is off on X11)
+ // we don't get _NET_FRAME_EXTENTS X11 property notification so we derive
+ // it from mContainer position.
+@@ -3689,6 +3689,26 @@ void nsWindow::OnScaleChanged(GtkAllocation* aAllocation) {
+ // configure_event is already fired before scale-factor signal,
+ // but size-allocate isn't fired by changing scale
+ OnSizeAllocate(aAllocation);
++
++ // Client offset are updated by _NET_FRAME_EXTENTS on X11 when system titlebar
++ // is enabled. In ither cases (Wayland or system titlebar is off on X11)
++ // we don't get _NET_FRAME_EXTENTS X11 property notification so we derive
++ // it from mContainer position.
++ if (mCSDSupportLevel == CSD_SUPPORT_CLIENT) {
++ if (!mIsX11Display || (mIsX11Display && mDrawInTitlebar)) {
++ UpdateClientOffsetFromCSDWindow();
++ }
++ }
++
++#ifdef MOZ_WAYLAND
++ // We need to update scale and opaque region when scale of egl window
++ // is changed.
++ if (mContainer && moz_container_has_wl_egl_window(mContainer)) {
++ moz_container_set_scale_factor(mContainer);
++ LayoutDeviceIntRegion tmpRegion;
++ UpdateOpaqueRegion(tmpRegion);
++ }
++#endif
+ }
+
+ void nsWindow::DispatchDragEvent(EventMessage aMsg,
+@@ -7618,12 +7638,7 @@ void nsWindow::GetCompositorWidgetInitData(
+ #ifdef MOZ_WAYLAND
+ wl_surface* nsWindow::GetWaylandSurface() {
+ if (mContainer) {
+- struct wl_surface* surface =
+- moz_container_get_wl_surface(MOZ_CONTAINER(mContainer));
+- if (surface != NULL) {
+- wl_surface_set_buffer_scale(surface, GdkScaleFactor());
+- }
+- return surface;
++ return moz_container_get_wl_surface(MOZ_CONTAINER(mContainer));
+ }
+
+ NS_WARNING(
diff --git a/www/firefox/files/patch-bug1619258 b/www/firefox/files/patch-bug1619258
new file mode 100644
index 000000000000..ef3616b4f97e
--- /dev/null
+++ b/www/firefox/files/patch-bug1619258
@@ -0,0 +1,101 @@
+commit 7f9b73f61241
+Author: Martin Stransky <stransky@redhat.com>
+Date: Wed Mar 18 07:01:27 2020 +0000
+
+ Bug 1619258 [Wayland] Enable VA-API for all formats, r=jya
+
+ Differential Revision: https://phabricator.services.mozilla.com/D65536
+
+ --HG--
+ extra : moz-landing-system : lando
+---
+ dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp | 30 ++++++++++++++---------
+ dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h | 1 +
+ 2 files changed, 20 insertions(+), 11 deletions(-)
+
+diff --git dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
+index 9a71a681eaef5..e0f7504574d6c 100644
+--- dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
++++ dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp
+@@ -42,6 +42,9 @@ typedef int VAStatus;
+ # define VA_STATUS_SUCCESS 0x00000000
+ #endif
+
++// Use some extra HW frames for potential rendering lags.
++#define EXTRA_HW_FRAMES 6
++
+ typedef mozilla::layers::Image Image;
+ typedef mozilla::layers::PlanarYCbCrImage PlanarYCbCrImage;
+
+@@ -135,10 +138,6 @@ VAAPIFrameHolder::~VAAPIFrameHolder() {
+ }
+
+ AVCodec* FFmpegVideoDecoder<LIBAV_VER>::FindVAAPICodec() {
+- if (mCodecID != AV_CODEC_ID_H264) {
+- return nullptr;
+- }
+-
+ AVCodec* decoder = mLib->avcodec_find_decoder(mCodecID);
+ for (int i = 0;; i++) {
+ const AVCodecHWConfig* config = mLib->avcodec_get_hw_config(decoder, i);
+@@ -172,7 +171,6 @@ bool FFmpegVideoDecoder<LIBAV_VER>::CreateVAAPIDeviceContext() {
+
+ MediaResult FFmpegVideoDecoder<LIBAV_VER>::InitVAAPIDecoder() {
+ FFMPEG_LOG("Initialising VA-API FFmpeg decoder");
+- MOZ_ASSERT(mCodecID == AV_CODEC_ID_H264);
+
+ if (!mLib->IsVAAPIAvailable()) {
+ FFMPEG_LOG("libva library is missing");
+@@ -282,11 +280,9 @@ RefPtr<MediaDataDecoder::InitPromise> FFmpegVideoDecoder<LIBAV_VER>::Init() {
+ MediaResult rv;
+
+ #ifdef MOZ_WAYLAND_USE_VAAPI
+- if (mCodecID == AV_CODEC_ID_H264) {
+- rv = InitVAAPIDecoder();
+- if (NS_SUCCEEDED(rv)) {
+- return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
+- }
++ rv = InitVAAPIDecoder();
++ if (NS_SUCCEEDED(rv)) {
++ return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
+ }
+ #endif
+
+@@ -338,7 +334,12 @@ void FFmpegVideoDecoder<LIBAV_VER>::InitVAAPICodecContext() {
+ mCodecContext->height = mInfo.mImage.height;
+ mCodecContext->thread_count = 1;
+ mCodecContext->get_format = ChooseVAAPIPixelFormat;
+- mCodecContext->extra_hw_frames = H264::ComputeMaxRefFrames(mInfo.mExtraData);
++ if (mCodecID == AV_CODEC_ID_H264) {
++ mCodecContext->extra_hw_frames =
++ H264::ComputeMaxRefFrames(mInfo.mExtraData);
++ } else {
++ mCodecContext->extra_hw_frames = EXTRA_HW_FRAMES;
++ }
+ }
+ #endif
+
+@@ -697,4 +698,11 @@ void FFmpegVideoDecoder<LIBAV_VER>::ProcessShutdown() {
+ FFmpegDataDecoder<LIBAV_VER>::ProcessShutdown();
+ }
+
++#ifdef MOZ_WAYLAND_USE_VAAPI
++bool FFmpegVideoDecoder<LIBAV_VER>::IsHardwareAccelerated(
++ nsACString& aFailureReason) const {
++ return !!mVAAPIDeviceContext;
++}
++#endif
++
+ } // namespace mozilla
+diff --git dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
+index 6158f7bc2f6dd..670cb6203dde0 100644
+--- dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
++++ dom/media/platforms/ffmpeg/FFmpegVideoDecoder.h
+@@ -92,6 +92,7 @@ class FFmpegVideoDecoder<LIBAV_VER>
+ bool CreateVAAPIDeviceContext();
+ void InitVAAPICodecContext();
+ AVCodec* FindVAAPICodec();
++ bool IsHardwareAccelerated(nsACString& aFailureReason) const override;
+
+ MediaResult CreateImageVAAPI(int64_t aOffset, int64_t aPts, int64_t aDuration,
+ MediaDataDecoder::DecodedData& aResults);