Date: Tue, 3 Jul 2018 00:21:56 +0000 (UTC) From: Jan Beich <jbeich@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r473780 - in head/www/waterfox: . files Message-ID: <201807030021.w630LuJ3060010@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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@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@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@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201807030021.w630LuJ3060010>