MFH: r479823
www/waterfox: update to 56.2.3 Changes: https://blog.waterfoxproject.org/waterfox-56.2.3-release-download Changes: https://github.com/MrAlex94/Waterfox/compare/56.2.2...56.2.3 Approved by: ports-secteam blanket
This commit is contained in:
parent
ffb513f63d
commit
d77a64deca
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/branches/2018Q3/; revision=479824
|
@ -1,7 +1,7 @@
|
|||
# $FreeBSD$
|
||||
|
||||
PORTNAME= waterfox
|
||||
DISTVERSION= 56.2.2
|
||||
DISTVERSION= 56.2.3
|
||||
CATEGORIES= www ipv6
|
||||
|
||||
MAINTAINER= jbeich@FreeBSD.org
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
TIMESTAMP = 1531411206
|
||||
SHA256 (MrAlex94-Waterfox-56.2.2_GH0.tar.gz) = cdca42bb619f0a4dedf216c78fe965775fd5e6cb14c8b5e677fe264b1f5667b2
|
||||
SIZE (MrAlex94-Waterfox-56.2.2_GH0.tar.gz) = 395130444
|
||||
TIMESTAMP = 1536644593
|
||||
SHA256 (MrAlex94-Waterfox-56.2.3_GH0.tar.gz) = 6134501bf3325d3bcd9632405a46f1f1278988e57bf4ca88b61926eb49ef1465
|
||||
SIZE (MrAlex94-Waterfox-56.2.3_GH0.tar.gz) = 395126627
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
commit dc0965023fb7
|
||||
Author: Randell Jesup <rjesup@jesup.org>
|
||||
Date: Mon May 21 15:30:35 2018 -0400
|
||||
|
||||
Bug 1425930 - Handle Broadcast()->Notify() calling RemoveObserver(). r=froydnj, a=abillings
|
||||
|
||||
--HG--
|
||||
extra : source : a314710b0acd38afc7de74f0306f514b50d84463
|
||||
---
|
||||
xpcom/ds/Observer.h | 28 ++++++++++++++++++++++++----
|
||||
1 file changed, 24 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git xpcom/ds/Observer.h xpcom/ds/Observer.h
|
||||
index 958e5e4a9694e..83d650a936ccc 100644
|
||||
--- xpcom/ds/Observer.h
|
||||
+++ xpcom/ds/Observer.h
|
||||
@@ -57,7 +57,17 @@ public:
|
||||
*/
|
||||
bool RemoveObserver(Observer<T>* aObserver)
|
||||
{
|
||||
- return mObservers.RemoveElement(aObserver);
|
||||
+ if (mObservers.RemoveElement(aObserver)) {
|
||||
+ if (!mBroadcastCopy.IsEmpty()) {
|
||||
+ // Annoyingly, someone could RemoveObserver() an item on the list
|
||||
+ // while we're in a Broadcast()'s Notify() call.
|
||||
+ auto i = mBroadcastCopy.IndexOf(aObserver);
|
||||
+ MOZ_ASSERT(i != mBroadcastCopy.NoIndex);
|
||||
+ mBroadcastCopy[i] = nullptr;
|
||||
+ }
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
}
|
||||
|
||||
uint32_t Length()
|
||||
@@ -65,17 +75,27 @@ public:
|
||||
return mObservers.Length();
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Call Notify() on each item in the list.
|
||||
+ * Handles the case of Notify() calling RemoveObserver()
|
||||
+ */
|
||||
void Broadcast(const T& aParam)
|
||||
{
|
||||
- nsTArray<Observer<T>*> observersCopy(mObservers);
|
||||
- uint32_t size = observersCopy.Length();
|
||||
+ MOZ_ASSERT(mBroadcastCopy.IsEmpty());
|
||||
+ mBroadcastCopy = mObservers;
|
||||
+ uint32_t size = mBroadcastCopy.Length();
|
||||
for (uint32_t i = 0; i < size; ++i) {
|
||||
- observersCopy[i]->Notify(aParam);
|
||||
+ // nulled if Removed during Broadcast
|
||||
+ if (mBroadcastCopy[i]) {
|
||||
+ mBroadcastCopy[i]->Notify(aParam);
|
||||
+ }
|
||||
}
|
||||
+ mBroadcastCopy.Clear();
|
||||
}
|
||||
|
||||
protected:
|
||||
nsTArray<Observer<T>*> mObservers;
|
||||
+ nsTArray<Observer<T>*> mBroadcastCopy;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
|
@ -1,72 +0,0 @@
|
|||
commit ff627ab4afeb
|
||||
Author: Gabriele Svelto <gsvelto@mozilla.com>
|
||||
Date: Tue Jun 19 09:18:09 2018 +0200
|
||||
|
||||
Bug 1469309 - Remove an unused sensor type; r=agaynor a=lizzard
|
||||
|
||||
--HG--
|
||||
extra : source : 12d7dd36b8ccb80e866d0da7fcb7e44fcb690b0b
|
||||
extra : intermediate-source : 3dd88f4a8884fe4327fc08588dce1fe221c45bcb
|
||||
---
|
||||
hal/Hal.cpp | 1 +
|
||||
hal/HalSensor.h | 3 +--
|
||||
hal/sandbox/SandboxHal.cpp | 6 +++---
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git hal/Hal.cpp hal/Hal.cpp
|
||||
index e03b7fdfab2f6..7845d5072ee53 100644
|
||||
--- hal/Hal.cpp
|
||||
+++ hal/Hal.cpp
|
||||
@@ -426,6 +426,7 @@ UnregisterSensorObserver(SensorType aSensor, ISensorObserver *aObserver) {
|
||||
AssertMainThread();
|
||||
|
||||
if (!gSensorObservers) {
|
||||
+ HAL_ERR("Un-registering a sensor when none have been registered");
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git hal/HalSensor.h hal/HalSensor.h
|
||||
index 551c4271d5395..5175629c9ab33 100644
|
||||
--- hal/HalSensor.h
|
||||
+++ hal/HalSensor.h
|
||||
@@ -18,7 +18,6 @@ namespace hal {
|
||||
* If you add or change any here, do the same in GeckoHalDefines.java.
|
||||
*/
|
||||
enum SensorType {
|
||||
- SENSOR_UNKNOWN = -1,
|
||||
SENSOR_ORIENTATION = 0,
|
||||
SENSOR_ACCELERATION = 1,
|
||||
SENSOR_PROXIMITY = 2,
|
||||
@@ -63,7 +62,7 @@ namespace IPC {
|
||||
struct ParamTraits<mozilla::hal::SensorType>:
|
||||
public ContiguousEnumSerializer<
|
||||
mozilla::hal::SensorType,
|
||||
- mozilla::hal::SENSOR_UNKNOWN,
|
||||
+ mozilla::hal::SENSOR_ORIENTATION,
|
||||
mozilla::hal::NUM_SENSOR_TYPE> {
|
||||
};
|
||||
|
||||
diff --git hal/sandbox/SandboxHal.cpp hal/sandbox/SandboxHal.cpp
|
||||
index 73b106da73d0a..cf0ccb483ed57 100644
|
||||
--- hal/sandbox/SandboxHal.cpp
|
||||
+++ hal/sandbox/SandboxHal.cpp
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "mozilla/dom/network/Types.h"
|
||||
#include "mozilla/dom/ScreenOrientation.h"
|
||||
#include "mozilla/fallback/FallbackScreenConfiguration.h"
|
||||
+#include "mozilla/EnumeratedRange.h"
|
||||
#include "mozilla/Observer.h"
|
||||
#include "mozilla/Unused.h"
|
||||
#include "nsAutoPtr.h"
|
||||
@@ -232,9 +233,8 @@ public:
|
||||
hal::UnregisterBatteryObserver(this);
|
||||
hal::UnregisterNetworkObserver(this);
|
||||
hal::UnregisterScreenConfigurationObserver(this);
|
||||
- for (int32_t sensor = SENSOR_UNKNOWN + 1;
|
||||
- sensor < NUM_SENSOR_TYPE; ++sensor) {
|
||||
- hal::UnregisterSensorObserver(SensorType(sensor), this);
|
||||
+ for (auto sensor : MakeEnumeratedRange(NUM_SENSOR_TYPE)) {
|
||||
+ hal::UnregisterSensorObserver(sensor, this);
|
||||
}
|
||||
hal::UnregisterWakeLockObserver(this);
|
||||
}
|
|
@ -1,118 +0,0 @@
|
|||
commit 051d1b6a48a7
|
||||
Author: Gabriele Svelto <gsvelto@mozilla.com>
|
||||
Date: Fri Jun 22 00:35:08 2018 +0200
|
||||
|
||||
Bug 1469914 - Prevent the HAL from registering duplicate observers; r=froydnj a=lizzard
|
||||
|
||||
This also replaces the custom logic in ObserverList with an nsTObserverArray
|
||||
which has all the necessary logic for stable iteration over a potentially
|
||||
changing list of items. Unused dependencies were also removed.
|
||||
|
||||
--HG--
|
||||
extra : source : 303478f7f248470a1c747f42dad9cb85c3129f0a
|
||||
extra : intermediate-source : 8e6dea408b0ee63ec1c675b8b0293c0ee2d100dd
|
||||
---
|
||||
hal/Hal.cpp | 3 ---
|
||||
hal/Hal.h | 1 -
|
||||
xpcom/ds/Observer.h | 33 ++++++++-------------------------
|
||||
3 files changed, 8 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git hal/Hal.cpp hal/Hal.cpp
|
||||
index 1b32db73e2508..e03b7fdfab2f6 100644
|
||||
--- hal/Hal.cpp
|
||||
+++ hal/Hal.cpp
|
||||
@@ -20,10 +20,7 @@
|
||||
#include "nsJSUtils.h"
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
#include "mozilla/Observer.h"
|
||||
-#include "mozilla/Services.h"
|
||||
-#include "mozilla/StaticPtr.h"
|
||||
#include "mozilla/dom/ContentChild.h"
|
||||
-#include "mozilla/dom/ContentParent.h"
|
||||
#include "mozilla/dom/ScreenOrientation.h"
|
||||
#include "WindowIdentifier.h"
|
||||
|
||||
diff --git hal/Hal.h hal/Hal.h
|
||||
index 787b7ed5f3890..311c5c8b50118 100644
|
||||
--- hal/Hal.h
|
||||
+++ hal/Hal.h
|
||||
@@ -17,7 +17,6 @@
|
||||
#include "mozilla/hal_sandbox/PHal.h"
|
||||
#include "mozilla/HalScreenConfiguration.h"
|
||||
#include "mozilla/HalTypes.h"
|
||||
-#include "mozilla/Observer.h"
|
||||
#include "mozilla/Types.h"
|
||||
|
||||
/*
|
||||
diff --git xpcom/ds/Observer.h xpcom/ds/Observer.h
|
||||
index 83d650a936ccc..9e782949c8e5e 100644
|
||||
--- xpcom/ds/Observer.h
|
||||
+++ xpcom/ds/Observer.h
|
||||
@@ -7,7 +7,7 @@
|
||||
#ifndef mozilla_Observer_h
|
||||
#define mozilla_Observer_h
|
||||
|
||||
-#include "nsTArray.h"
|
||||
+#include "nsTObserverArray.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
@@ -48,7 +48,7 @@ public:
|
||||
*/
|
||||
void AddObserver(Observer<T>* aObserver)
|
||||
{
|
||||
- mObservers.AppendElement(aObserver);
|
||||
+ mObservers.AppendElementUnlessExists(aObserver);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,17 +57,7 @@ public:
|
||||
*/
|
||||
bool RemoveObserver(Observer<T>* aObserver)
|
||||
{
|
||||
- if (mObservers.RemoveElement(aObserver)) {
|
||||
- if (!mBroadcastCopy.IsEmpty()) {
|
||||
- // Annoyingly, someone could RemoveObserver() an item on the list
|
||||
- // while we're in a Broadcast()'s Notify() call.
|
||||
- auto i = mBroadcastCopy.IndexOf(aObserver);
|
||||
- MOZ_ASSERT(i != mBroadcastCopy.NoIndex);
|
||||
- mBroadcastCopy[i] = nullptr;
|
||||
- }
|
||||
- return true;
|
||||
- }
|
||||
- return false;
|
||||
+ return mObservers.RemoveElement(aObserver);
|
||||
}
|
||||
|
||||
uint32_t Length()
|
||||
@@ -77,25 +67,18 @@ public:
|
||||
|
||||
/**
|
||||
* Call Notify() on each item in the list.
|
||||
- * Handles the case of Notify() calling RemoveObserver()
|
||||
*/
|
||||
void Broadcast(const T& aParam)
|
||||
{
|
||||
- MOZ_ASSERT(mBroadcastCopy.IsEmpty());
|
||||
- mBroadcastCopy = mObservers;
|
||||
- uint32_t size = mBroadcastCopy.Length();
|
||||
- for (uint32_t i = 0; i < size; ++i) {
|
||||
- // nulled if Removed during Broadcast
|
||||
- if (mBroadcastCopy[i]) {
|
||||
- mBroadcastCopy[i]->Notify(aParam);
|
||||
- }
|
||||
+ typename nsTObserverArray<Observer<T>*>::ForwardIterator iter(mObservers);
|
||||
+ while (iter.HasMore()) {
|
||||
+ Observer<T>* obs = iter.GetNext();
|
||||
+ obs->Notify(aParam);
|
||||
}
|
||||
- mBroadcastCopy.Clear();
|
||||
}
|
||||
|
||||
protected:
|
||||
- nsTArray<Observer<T>*> mObservers;
|
||||
- nsTArray<Observer<T>*> mBroadcastCopy;
|
||||
+ nsTObserverArray<Observer<T>*> mObservers;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
|
@ -1,164 +0,0 @@
|
|||
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
|
|
@ -1,83 +0,0 @@
|
|||
commit 8ffab3ae0ea3
|
||||
Author: Karl Tomlinson <karlt+@karlt.net>
|
||||
Date: Tue Jul 3 17:23:09 2018 +1200
|
||||
|
||||
Bug 1472925 - Keep a strong reference to MediaStreamGraph from GraphDriver. r=padenot, a=lizzard
|
||||
---
|
||||
dom/media/GraphDriver.cpp | 7 ++++---
|
||||
dom/media/GraphDriver.h | 6 ++----
|
||||
dom/media/MediaStreamGraph.cpp | 3 ++-
|
||||
3 files changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git dom/media/GraphDriver.cpp dom/media/GraphDriver.cpp
|
||||
index fd003ac9dbc6a..197debf299582 100644
|
||||
--- dom/media/GraphDriver.cpp
|
||||
+++ dom/media/GraphDriver.cpp
|
||||
@@ -179,7 +179,8 @@ class MediaStreamGraphInitThreadRunnable : public Runn
|
||||
NS_IMETHOD Run() override
|
||||
{
|
||||
LOG(LogLevel::Debug,
|
||||
- ("Starting a new system driver for graph %p", mDriver->mGraphImpl));
|
||||
+ ("Starting a new system driver for graph %p",
|
||||
+ mDriver->mGraphImpl.get()));
|
||||
|
||||
RefPtr<GraphDriver> previousDriver;
|
||||
{
|
||||
@@ -217,7 +218,7 @@ void
|
||||
ThreadedDriver::Start()
|
||||
{
|
||||
LOG(LogLevel::Debug,
|
||||
- ("Starting thread for a SystemClockDriver %p", mGraphImpl));
|
||||
+ ("Starting thread for a SystemClockDriver %p", mGraphImpl.get()));
|
||||
Unused << NS_WARN_IF(mThread);
|
||||
if (!mThread) { // Ensure we haven't already started it
|
||||
nsCOMPtr<nsIRunnable> event = new MediaStreamGraphInitThreadRunnable(this);
|
||||
@@ -784,7 +785,7 @@ void
|
||||
AudioCallbackDriver::Resume()
|
||||
{
|
||||
LOG(LogLevel::Debug,
|
||||
- ("Resuming audio threads for MediaStreamGraph %p", mGraphImpl));
|
||||
+ ("Resuming audio threads for MediaStreamGraph %p", mGraphImpl.get()));
|
||||
if (cubeb_stream_start(mAudioStream) != CUBEB_OK) {
|
||||
NS_WARNING("Could not start cubeb stream for MSG.");
|
||||
}
|
||||
@@ -859,7 +860,7 @@ AudioCallbackDriver::Revive()
|
||||
} else {
|
||||
LOG(LogLevel::Debug,
|
||||
("Starting audio threads for MediaStreamGraph %p from a new thread.",
|
||||
- mGraphImpl));
|
||||
+ mGraphImpl.get()));
|
||||
RefPtr<AsyncCubebTask> initEvent =
|
||||
new AsyncCubebTask(this, AsyncCubebOperation::INIT);
|
||||
initEvent->Dispatch();
|
||||
diff --git dom/media/GraphDriver.h dom/media/GraphDriver.h
|
||||
index 5c085dc36bff5..ca77b5752569f 100644
|
||||
--- dom/media/GraphDriver.h
|
||||
+++ dom/media/GraphDriver.h
|
||||
@@ -211,10 +211,8 @@ protected:
|
||||
// Time of the end of this graph iteration. This must be accessed while having
|
||||
// the monitor.
|
||||
GraphTime mIterationEnd;
|
||||
- // The MediaStreamGraphImpl that owns this driver. This has a lifetime longer
|
||||
- // than the driver, and will never be null. Hence, it can be accesed without
|
||||
- // monitor.
|
||||
- MediaStreamGraphImpl* mGraphImpl;
|
||||
+ // The MediaStreamGraphImpl associated with this driver.
|
||||
+ const RefPtr<MediaStreamGraphImpl> mGraphImpl;
|
||||
|
||||
// This is used on the main thread (during initialization), and the graph
|
||||
// thread. No monitor needed because we know the graph thread does not run
|
||||
diff --git dom/media/MediaStreamGraph.cpp dom/media/MediaStreamGraph.cpp
|
||||
index a3c8b26c2663d..4e6175e0d9fed 100644
|
||||
--- dom/media/MediaStreamGraph.cpp
|
||||
+++ dom/media/MediaStreamGraph.cpp
|
||||
@@ -3661,7 +3661,8 @@ MediaStreamGraphImpl::Destroy()
|
||||
// First unregister from memory reporting.
|
||||
UnregisterWeakMemoryReporter(this);
|
||||
|
||||
- // Clear the self reference which will destroy this instance.
|
||||
+ // Clear the self reference which will destroy this instance if all
|
||||
+ // associated GraphDrivers are destroyed.
|
||||
mSelfRef = nullptr;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user