From owner-svn-ports-head@freebsd.org Tue Jul 3 00:21:57 2018 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 641D3FE768A; Tue, 3 Jul 2018 00:21:57 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 19EC5819C8; Tue, 3 Jul 2018 00:21:57 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D7FFB14B8C; Tue, 3 Jul 2018 00:21:56 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w630LuYi060013; Tue, 3 Jul 2018 00:21:56 GMT (envelope-from jbeich@FreeBSD.org) Received: (from jbeich@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w630LuJ3060010; Tue, 3 Jul 2018 00:21:56 GMT (envelope-from jbeich@FreeBSD.org) Message-Id: <201807030021.w630LuJ3060010@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jbeich set sender to jbeich@FreeBSD.org using -f From: Jan Beich Date: Tue, 3 Jul 2018 00:21:56 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r473780 - in head/www/waterfox: . files X-SVN-Group: ports-head X-SVN-Commit-Author: jbeich X-SVN-Commit-Paths: in head/www/waterfox: . files X-SVN-Commit-Revision: 473780 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Jul 2018 00:21:57 -0000 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 +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 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 +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 kungFuDeathGrip(this); + TickRefreshDriver(aVsyncTimestamp); + } + + +commit 06c64e041c90 +Author: Mats Palmgren +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> 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(aClosure); ++ RefPtr timer = ++ static_cast(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 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(aClosure); ++ RefPtr timer = ++ static_cast(aClosure); + timer->TickOne(); + } + +@@ -967,8 +971,8 @@ protected: + + } // namespace mozilla + +-static RefreshDriverTimer* sRegularRateTimer; +-static InactiveRefreshDriverTimer* sThrottledRateTimer; ++static StaticRefPtr sRegularRateTimer; ++static StaticRefPtr 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 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