svn commit: r473780 - in head/www/waterfox: . files
Jan Beich
jbeich at FreeBSD.org
Tue Jul 3 00:21:57 UTC 2018
Author: jbeich
Date: Tue Jul 3 00:21:55 2018
New Revision: 473780
URL: https://svnweb.freebsd.org/changeset/ports/473780
Log:
www/waterfox: update to 56.2.1.55
- Apply some FF61 fixes
Changes: https://github.com/MrAlex94/Waterfox/compare/7f6ff796eeda4...6395bf177f76a
Added:
head/www/waterfox/files/patch-bug1469257 (contents, props changed)
head/www/waterfox/files/patch-bug1470260 (contents, props changed)
Deleted:
head/www/waterfox/files/patch-bug1456189
head/www/waterfox/files/patch-bug1456975
head/www/waterfox/files/patch-bug1464039
head/www/waterfox/files/patch-bug1464063
Modified:
head/www/waterfox/Makefile (contents, props changed)
head/www/waterfox/distinfo (contents, props changed)
Modified: head/www/waterfox/Makefile
==============================================================================
--- head/www/waterfox/Makefile Tue Jul 3 00:21:32 2018 (r473779)
+++ head/www/waterfox/Makefile Tue Jul 3 00:21:55 2018 (r473780)
@@ -1,9 +1,8 @@
# $FreeBSD$
PORTNAME= waterfox
-DISTVERSION= 56.2.1-48
-DISTVERSIONSUFFIX= -g7f6ff796eeda4
-PORTREVISION= 1
+DISTVERSION= 56.2.1-55
+DISTVERSIONSUFFIX= -g6395bf177f76a
CATEGORIES= www ipv6
MAINTAINER= jbeich at FreeBSD.org
Modified: head/www/waterfox/distinfo
==============================================================================
--- head/www/waterfox/distinfo Tue Jul 3 00:21:32 2018 (r473779)
+++ head/www/waterfox/distinfo Tue Jul 3 00:21:55 2018 (r473780)
@@ -1,3 +1,3 @@
-TIMESTAMP = 1530292793
-SHA256 (MrAlex94-Waterfox-56.2.1-48-g7f6ff796eeda4_GH0.tar.gz) = 07b65c4e20917968ce5086ddef09dcfe37bd90135f4f37fa2d4cd6029ac38df8
-SIZE (MrAlex94-Waterfox-56.2.1-48-g7f6ff796eeda4_GH0.tar.gz) = 395133776
+TIMESTAMP = 1530543888
+SHA256 (MrAlex94-Waterfox-56.2.1-55-g6395bf177f76a_GH0.tar.gz) = 768ff4628b2f4dcf1868dfae711a10b69d2166c544a1252dd4463c2b596676ec
+SIZE (MrAlex94-Waterfox-56.2.1-55-g6395bf177f76a_GH0.tar.gz) = 395130631
Added: head/www/waterfox/files/patch-bug1469257
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1469257 Tue Jul 3 00:21:55 2018 (r473780)
@@ -0,0 +1,50 @@
+commit 6717d9afef42
+Author: Jean-Yves Avenard <jyavenard at mozilla.com>
+Date: Wed Jun 20 19:24:34 2018 +0000
+
+ Bug 1469257 - [H264] Only check for SPS changes on keyframe. r=bryce, a=RyanVM
+
+ Some invalid streams contain SPS changes and those appear to only occur on non-keyframe, this cause all frames to be dropped until the next keyframe is found. This result in apparent freezes.
+
+ While it is theoretically possible to have SPS changes inband on non-keyframe those should be very rare (I've never seen one). The content would have been invalid anyway in an non-fragmented mp4.
+
+ So we now only check for a SPS change on keyframe. This would cause no affect on either windows, android or ffmpeg as those decoders handle format change fine. The mac decoder could however show garbled frames temporarily.
+
+ Differential Revision: https://phabricator.services.mozilla.com/D1733
+
+ --HG--
+ extra : source : ddde6ad6d9e6c4069632e195613bcd53a39883e4
+---
+ dom/media/platforms/wrappers/H264Converter.cpp | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git dom/media/platforms/wrappers/H264Converter.cpp dom/media/platforms/wrappers/H264Converter.cpp
+index 32b1abf179937..5c04c075664c3 100644
+--- dom/media/platforms/wrappers/H264Converter.cpp
++++ dom/media/platforms/wrappers/H264Converter.cpp
+@@ -392,7 +392,7 @@ MediaResult
+ H264Converter::CheckForSPSChange(MediaRawData* aSample)
+ {
+ RefPtr<MediaByteBuffer> extra_data =
+- mp4_demuxer::H264::ExtractExtraData(aSample);
++ aSample->mKeyframe ? mp4_demuxer::H264::ExtractExtraData(aSample) : nullptr;
+ if (!mp4_demuxer::H264::HasSPS(extra_data)) {
+ MOZ_ASSERT(mCanRecycleDecoder.isSome());
+ if (!*mCanRecycleDecoder) {
+@@ -406,14 +406,12 @@ H264Converter::CheckForSPSChange(MediaRawData* aSample)
+ // This scenario can only occur on Android with devices that can recycle a
+ // decoder.
+ if (!mp4_demuxer::H264::HasSPS(aSample->mExtraData) ||
+- mp4_demuxer::H264::CompareExtraData(aSample->mExtraData,
+- mOriginalExtraData)) {
++ mp4_demuxer::H264::CompareExtraData(aSample->mExtraData, mOriginalExtraData)) {
+ return NS_OK;
+ }
+ extra_data = mOriginalExtraData = aSample->mExtraData;
+ }
+- if (mp4_demuxer::H264::CompareExtraData(extra_data,
+- mCurrentConfig.mExtraData)) {
++ if (mp4_demuxer::H264::CompareExtraData(extra_data, mCurrentConfig.mExtraData)) {
+ return NS_OK;
+ }
+
Added: head/www/waterfox/files/patch-bug1470260
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1470260 Tue Jul 3 00:21:55 2018 (r473780)
@@ -0,0 +1,164 @@
+commit bb90f9b13b2d
+Author: Mats Palmgren <mats at mozilla.com>
+Date: Sat Jun 30 01:08:54 2018 +0200
+
+ Bug 1470260 part 1 - Ensure that 'this' stays alive for the duration of the TickRefreshDriver call. r=emilio a=lizzard
+
+ --HG--
+ extra : source : 89db79608a7565ead4ceca4db9e2417b1373e41d
+---
+ layout/base/nsRefreshDriver.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git layout/base/nsRefreshDriver.cpp layout/base/nsRefreshDriver.cpp
+index 3e468c17ad300..446fcf3f243a8 100644
+--- layout/base/nsRefreshDriver.cpp
++++ layout/base/nsRefreshDriver.cpp
+@@ -537,6 +537,9 @@ private:
+
+ bool NotifyVsync(TimeStamp aVsyncTimestamp) override
+ {
++ // IMPORTANT: All paths through this method MUST hold a strong ref on
++ // |this| for the duration of the TickRefreshDriver callback.
++
+ if (!NS_IsMainThread()) {
+ MOZ_ASSERT(XRE_IsParentProcess());
+ // Compress vsync notifications such that only 1 may run at a time
+@@ -571,6 +574,7 @@ private:
+ return true;
+ }
+
++ RefPtr<RefreshDriverVsyncObserver> kungFuDeathGrip(this);
+ TickRefreshDriver(aVsyncTimestamp);
+ }
+
+
+commit 06c64e041c90
+Author: Mats Palmgren <mats at mozilla.com>
+Date: Mon Jul 2 19:19:29 2018 +0300
+
+ Bug 1470260 part 2 - Make RefreshDriverTimer ref-counted and hold a strong ref on it on the stack when nsRefreshDriver::Tick can be reached. r=emilio a=lizzard
+
+ --HG--
+ extra : rebase_source : 817d92ed5dc53ff45d6d2818ccf8b08538cf397b
+---
+ layout/base/nsRefreshDriver.cpp | 42 ++++++++++++++++++++---------------------
+ 1 file changed, 21 insertions(+), 21 deletions(-)
+
+diff --git layout/base/nsRefreshDriver.cpp layout/base/nsRefreshDriver.cpp
+index 446fcf3f243a8..fd7b268d90d07 100644
+--- layout/base/nsRefreshDriver.cpp
++++ layout/base/nsRefreshDriver.cpp
+@@ -148,11 +148,7 @@ public:
+ {
+ }
+
+- virtual ~RefreshDriverTimer()
+- {
+- MOZ_ASSERT(mContentRefreshDrivers.Length() == 0, "Should have removed all content refresh drivers from here by now!");
+- MOZ_ASSERT(mRootRefreshDrivers.Length() == 0, "Should have removed all root refresh drivers from here by now!");
+- }
++ NS_INLINE_DECL_REFCOUNTING(RefreshDriverTimer)
+
+ virtual void AddRefreshDriver(nsRefreshDriver* aDriver)
+ {
+@@ -259,6 +255,12 @@ public:
+ }
+
+ protected:
++ virtual ~RefreshDriverTimer()
++ {
++ MOZ_ASSERT(mContentRefreshDrivers.Length() == 0, "Should have removed all content refresh drivers from here by now!");
++ MOZ_ASSERT(mRootRefreshDrivers.Length() == 0, "Should have removed all root refresh drivers from here by now!");
++ }
++
+ virtual void StartTimer() = 0;
+ virtual void StopTimer() = 0;
+ virtual void ScheduleNextTick(TimeStamp aNowTime) = 0;
+@@ -336,10 +338,11 @@ protected:
+ nsTArray<RefPtr<nsRefreshDriver>> mRootRefreshDrivers;
+
+ // useful callback for nsITimer-based derived classes, here
+- // bacause of c++ protected shenanigans
++ // because of c++ protected shenanigans
+ static void TimerTick(nsITimer* aTimer, void* aClosure)
+ {
+- RefreshDriverTimer *timer = static_cast<RefreshDriverTimer*>(aClosure);
++ RefPtr<RefreshDriverTimer> timer =
++ static_cast<RefreshDriverTimer*>(aClosure);
+ timer->Tick();
+ }
+ };
+@@ -471,9 +474,7 @@ public:
+ private:
+ // Since VsyncObservers are refCounted, but the RefreshDriverTimer are
+ // explicitly shutdown. We create an inner class that has the VsyncObserver
+- // and is shutdown when the RefreshDriverTimer is deleted. The alternative is
+- // to (a) make all RefreshDriverTimer RefCounted or (b) use different
+- // VsyncObserver types.
++ // and is shutdown when the RefreshDriverTimer is deleted.
+ class RefreshDriverVsyncObserver final : public VsyncObserver
+ {
+ public:
+@@ -674,7 +675,9 @@ private:
+ // the scheduled TickRefreshDriver() runs. Check mVsyncRefreshDriverTimer
+ // before use.
+ if (mVsyncRefreshDriverTimer) {
+- mVsyncRefreshDriverTimer->RunRefreshDrivers(aVsyncTimestamp);
++ RefPtr<VsyncRefreshDriverTimer> timer = mVsyncRefreshDriverTimer;
++ timer->RunRefreshDrivers(aVsyncTimestamp);
++ // Note: mVsyncRefreshDriverTimer might be null now.
+ }
+
+ if (!XRE_IsParentProcess()) {
+@@ -956,7 +959,8 @@ protected:
+
+ static void TimerTickOne(nsITimer* aTimer, void* aClosure)
+ {
+- InactiveRefreshDriverTimer *timer = static_cast<InactiveRefreshDriverTimer*>(aClosure);
++ RefPtr<InactiveRefreshDriverTimer> timer =
++ static_cast<InactiveRefreshDriverTimer*>(aClosure);
+ timer->TickOne();
+ }
+
+@@ -967,8 +971,8 @@ protected:
+
+ } // namespace mozilla
+
+-static RefreshDriverTimer* sRegularRateTimer;
+-static InactiveRefreshDriverTimer* sThrottledRateTimer;
++static StaticRefPtr<RefreshDriverTimer> sRegularRateTimer;
++static StaticRefPtr<InactiveRefreshDriverTimer> sThrottledRateTimer;
+
+ static void
+ CreateContentVsyncRefreshTimer(void*)
+@@ -1042,9 +1046,6 @@ GetFirstFrameDelay(imgIRequest* req)
+ nsRefreshDriver::Shutdown()
+ {
+ // clean up our timers
+- delete sRegularRateTimer;
+- delete sThrottledRateTimer;
+-
+ sRegularRateTimer = nullptr;
+ sThrottledRateTimer = nullptr;
+ }
+@@ -2292,16 +2293,15 @@ nsRefreshDriver::PVsyncActorCreated(VsyncChild* aVsyncChild)
+ {
+ MOZ_ASSERT(NS_IsMainThread());
+ MOZ_ASSERT(!XRE_IsParentProcess());
+- auto* vsyncRefreshDriverTimer =
+- new VsyncRefreshDriverTimer(aVsyncChild);
++ RefPtr<RefreshDriverTimer> vsyncRefreshDriverTimer =
++ new VsyncRefreshDriverTimer(aVsyncChild);
+
+ // If we are using software timer, swap current timer to
+ // VsyncRefreshDriverTimer.
+ if (sRegularRateTimer) {
+ sRegularRateTimer->SwapRefreshDrivers(vsyncRefreshDriverTimer);
+- delete sRegularRateTimer;
+ }
+- sRegularRateTimer = vsyncRefreshDriverTimer;
++ sRegularRateTimer = vsyncRefreshDriverTimer.forget();
+ }
+
+ void
More information about the svn-ports-head
mailing list