svn commit: r530013 - in head: Mk www/firefox www/firefox/files
Jan Beich
jbeich at FreeBSD.org
Tue Mar 31 20:32:56 UTC 2020
Author: jbeich
Date: Tue Mar 31 20:32:40 2020
New Revision: 530013
URL: https://svnweb.freebsd.org/changeset/ports/530013
Log:
www/firefox: update to 75.0
Changes: https://www.mozilla.org/firefox/75.0/releasenotes/
PR: 244793
Security: 98c69f9a-856b-4180-8f0b-11846626c6cc
Differential Revision: https://reviews.freebsd.org/D24062
Added:
head/www/firefox/files/patch-bug1612377 (contents, props changed)
head/www/firefox/files/patch-bug1619258 (contents, props changed)
Deleted:
head/www/firefox/files/patch-bug1594027
head/www/firefox/files/patch-bug1607052
Modified:
head/Mk/bsd.gecko.mk (contents, props changed)
head/www/firefox/Makefile (contents, props changed)
head/www/firefox/distinfo (contents, props changed)
Modified: head/Mk/bsd.gecko.mk
==============================================================================
--- head/Mk/bsd.gecko.mk Tue Mar 31 20:25:18 2020 (r530012)
+++ head/Mk/bsd.gecko.mk Tue Mar 31 20:32:40 2020 (r530013)
@@ -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} \
Modified: head/www/firefox/Makefile
==============================================================================
--- head/www/firefox/Makefile Tue Mar 31 20:25:18 2020 (r530012)
+++ head/www/firefox/Makefile Tue Mar 31 20:32:40 2020 (r530013)
@@ -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 at 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 at 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
Modified: head/www/firefox/distinfo
==============================================================================
--- head/www/firefox/distinfo Tue Mar 31 20:25:18 2020 (r530012)
+++ head/www/firefox/distinfo Tue Mar 31 20:32:40 2020 (r530013)
@@ -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
Added: head/www/firefox/files/patch-bug1612377
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/firefox/files/patch-bug1612377 Tue Mar 31 20:32:40 2020 (r530013)
@@ -0,0 +1,210 @@
+commit f30e2a9e31fa
+Author: Martin Stransky <stransky at 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 at 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(
Added: head/www/firefox/files/patch-bug1619258
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/firefox/files/patch-bug1619258 Tue Mar 31 20:32:40 2020 (r530013)
@@ -0,0 +1,101 @@
+commit 7f9b73f61241
+Author: Martin Stransky <stransky at 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);
More information about the svn-ports-all
mailing list