Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142187079
D24062.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
26 KB
Referenced Files
None
Subscribers
None
D24062.diff
View Options
Index: head/Mk/bsd.gecko.mk
===================================================================
--- head/Mk/bsd.gecko.mk
+++ head/Mk/bsd.gecko.mk
@@ -76,8 +76,8 @@
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} \
Index: head/www/firefox/Makefile
===================================================================
--- head/www/firefox/Makefile
+++ head/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
Index: head/www/firefox/distinfo
===================================================================
--- head/www/firefox/distinfo
+++ head/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
Index: head/www/firefox/files/patch-bug1594027
===================================================================
--- head/www/firefox/files/patch-bug1594027
+++ head/www/firefox/files/patch-bug1594027
@@ -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) && \
Index: head/www/firefox/files/patch-bug1607052
===================================================================
--- head/www/firefox/files/patch-bug1607052
+++ head/www/firefox/files/patch-bug1607052
@@ -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);
-
Index: head/www/firefox/files/patch-bug1612377
===================================================================
--- head/www/firefox/files/patch-bug1612377
+++ head/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(
Index: head/www/firefox/files/patch-bug1619258
===================================================================
--- head/www/firefox/files/patch-bug1619258
+++ head/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);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jan 17, 11:54 PM (8 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27701240
Default Alt Text
D24062.diff (26 KB)
Attached To
Mode
D24062: www/firefox: update to 75.0
Attached
Detach File
Event Timeline
Log In to Comment