Bug 1404997 - P14. Rename members to clarify the finish meaning. r?padenot
We have different concept of "finish" between the base class and its hierarchy.
Attempt to clear the sitatuation by renaming the members and related methods.
MozReview-Commit-ID: vFsXhMK5GY
--- a/dom/media/DOMMediaStream.cpp
+++ b/dom/media/DOMMediaStream.cpp
@@ -969,32 +969,32 @@ DOMMediaStream::InitInputStreamCommon(Me
}
void
DOMMediaStream::InitOwnedStreamCommon(MediaStreamGraph* aGraph)
{
MOZ_ASSERT(!mPlaybackStream, "Owned stream must be initialized before playback stream");
mOwnedStream = aGraph->CreateTrackUnionStream();
- mOwnedStream->SetAutofinish(true);
+ mOwnedStream->QueueSetAutofinish(true);
mOwnedStream->RegisterUser();
if (mInputStream) {
mOwnedPort = mOwnedStream->AllocateInputPort(mInputStream);
}
// Setup track listeners
mOwnedListener = new OwnedStreamListener(this);
mOwnedStream->AddListener(mOwnedListener);
}
void
DOMMediaStream::InitPlaybackStreamCommon(MediaStreamGraph* aGraph)
{
mPlaybackStream = aGraph->CreateTrackUnionStream();
- mPlaybackStream->SetAutofinish(true);
+ mPlaybackStream->QueueSetAutofinish(true);
mPlaybackStream->RegisterUser();
if (mOwnedStream) {
mPlaybackPort = mPlaybackStream->AllocateInputPort(mOwnedStream);
}
mPlaybackListener = new PlaybackStreamListener(this);
mPlaybackStream->AddListener(mPlaybackListener);
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1489,17 +1489,17 @@ public:
// mGraph's thread is not running so it's OK to do whatever here
for (MediaStream* stream : mGraph->AllStreams()) {
// Clean up all MediaSegments since we cannot release Images too
// late during shutdown. Also notify listeners that they were removed
// so they can clean up any gfx resources.
if (SourceMediaStream* source = stream->AsSourceStream()) {
// Finishing a SourceStream prevents new data from being appended.
- source->Finish();
+ source->FinishPending();
}
stream->GetStreamTracks().Clear();
stream->RemoveAllListenersImpl();
}
mGraph->mForceShutdownTicket = nullptr;
// We can't block past the final LIFECYCLE_WAITING_FOR_STREAM_DESTRUCTION
@@ -2651,17 +2651,17 @@ MediaStream::AddMainThreadListener(MainT
GraphImpl()->Dispatch(runnable.forget());
}
SourceMediaStream::SourceMediaStream()
: MediaStream()
, mMutex("mozilla::media::SourceMediaStream")
, mUpdateKnownTracksTime(0)
, mPullEnabled(false)
- , mUpdateFinished(false)
+ , mFinishPending(false)
, mNeedsMixing(false)
{
}
nsresult
SourceMediaStream::OpenAudioInput(int aID,
AudioDataListener *aListener)
{
@@ -2743,17 +2743,17 @@ SourceMediaStream::ExtractPendingInput(S
{
MutexAutoUnlock unlock(mMutex);
l->NotifyPull(GraphImpl(), t);
}
}
}
}
- bool finished = mUpdateFinished;
+ bool finished = mFinishPending;
bool shouldNotifyTrackCreated = false;
for (int32_t i = mUpdateTracks.Length() - 1; i >= 0; --i) {
SourceMediaStream::TrackData* data = &mUpdateTracks[i];
ApplyTrackDisabling(data->mID, data->mData);
// Dealing with NotifyQueuedTrackChanges and NotifyQueuedAudioData part.
// The logic is different from the manipulating of aStream->mTracks part.
@@ -3157,20 +3157,20 @@ SourceMediaStream::AdvanceKnownTracksTim
MOZ_ASSERT(aKnownTime >= mUpdateKnownTracksTime);
mUpdateKnownTracksTime = aKnownTime;
if (auto graph = GraphImpl()) {
graph->EnsureNextIteration();
}
}
void
-SourceMediaStream::FinishWithLockHeld()
+SourceMediaStream::FinishPendingWithLockHeld()
{
mMutex.AssertCurrentThreadOwns();
- mUpdateFinished = true;
+ mFinishPending = true;
if (auto graph = GraphImpl()) {
graph->EnsureNextIteration();
}
}
void
SourceMediaStream::SetTrackEnabledImpl(TrackID aTrackID, DisabledTrackMode aMode)
{
@@ -3206,17 +3206,17 @@ void
SourceMediaStream::EndAllTrackAndFinish()
{
MutexAutoLock lock(mMutex);
for (uint32_t i = 0; i < mUpdateTracks.Length(); ++i) {
SourceMediaStream::TrackData* data = &mUpdateTracks[i];
data->mCommands |= TrackEventCommand::TRACK_EVENT_ENDED;
}
mPendingTracks.Clear();
- FinishWithLockHeld();
+ FinishPendingWithLockHeld();
// we will call NotifyEvent() to let GetUserMedia know
}
void
SourceMediaStream::RemoveAllDirectListeners()
{
GraphImpl()->AssertOnGraphThreadOrNotRunning();
@@ -3474,32 +3474,32 @@ ProcessedMediaStream::AllocateInputPort(
}
}
port->SetGraphImpl(GraphImpl());
GraphImpl()->AppendMessage(MakeUnique<Message>(port));
return port.forget();
}
void
-ProcessedMediaStream::Finish()
+ProcessedMediaStream::QueueFinish()
{
class Message : public ControlMessage {
public:
explicit Message(ProcessedMediaStream* aStream)
: ControlMessage(aStream) {}
void Run() override
{
mStream->GraphImpl()->FinishStream(mStream);
}
};
GraphImpl()->AppendMessage(MakeUnique<Message>(this));
}
void
-ProcessedMediaStream::SetAutofinish(bool aAutofinish)
+ProcessedMediaStream::QueueSetAutofinish(bool aAutofinish)
{
class Message : public ControlMessage {
public:
Message(ProcessedMediaStream* aStream, bool aAutofinish)
: ControlMessage(aStream), mAutofinish(aAutofinish) {}
void Run() override
{
static_cast<ProcessedMediaStream*>(mStream)->SetAutofinishImpl(mAutofinish);
--- a/dom/media/MediaStreamGraph.h
+++ b/dom/media/MediaStreamGraph.h
@@ -764,21 +764,21 @@ public:
* aKnownTime must be >= its value at the last call to AdvanceKnownTracksTime.
*/
void AdvanceKnownTracksTime(StreamTime aKnownTime);
/**
* Indicate that this stream should enter the "finished" state. All tracks
* must have been ended via EndTrack. The finish time of the stream is
* when all tracks have ended.
*/
- void FinishWithLockHeld();
- void Finish()
+ void FinishPendingWithLockHeld();
+ void FinishPending()
{
MutexAutoLock lock(mMutex);
- FinishWithLockHeld();
+ FinishPendingWithLockHeld();
}
// Overriding allows us to hold the mMutex lock while changing the track enable status
void SetTrackEnabledImpl(TrackID aTrackID, DisabledTrackMode aMode) override;
// Overriding allows us to ensure mMutex is locked while changing the track enable status
void
ApplyTrackDisabling(TrackID aTrackID, MediaSegment* aSegment,
@@ -903,17 +903,17 @@ protected:
// This time stamp will be updated in adding and blocked SourceMediaStream,
// |AddStreamGraphThread| and |AdvanceTimeVaryingValuesToCurrentTime| in
// particularly.
TimeStamp mStreamTracksStartTimeStamp;
nsTArray<TrackData> mUpdateTracks;
nsTArray<TrackData> mPendingTracks;
nsTArray<TrackBound<DirectMediaStreamTrackListener>> mDirectTrackListeners;
bool mPullEnabled;
- bool mUpdateFinished;
+ bool mFinishPending;
bool mNeedsMixing;
};
/**
* The blocking mode decides how a track should be blocked in a MediaInputPort.
*/
enum class BlockingMode
{
@@ -1160,25 +1160,26 @@ public:
already_AddRefed<MediaInputPort>
AllocateInputPort(MediaStream* aStream,
TrackID aTrackID = TRACK_ANY,
TrackID aDestTrackID = TRACK_ANY,
uint16_t aInputNumber = 0,
uint16_t aOutputNumber = 0,
nsTArray<TrackID>* aBlockedTracks = nullptr);
/**
- * Force this stream into the finished state.
+ * Queue a message to force this stream into the finished state.
*/
- void Finish();
+ void QueueFinish();
/**
- * Set the autofinish flag on this stream (defaults to false). When this flag
- * is set, and all input streams are in the finished state (including if there
- * are no input streams), this stream automatically enters the finished state.
+ * Queue a message to set the autofinish flag on this stream (defaults to
+ * false). When this flag is set, and all input streams are in the finished
+ * state (including if there are no input streams), this stream automatically
+ * enters the finished state.
*/
- void SetAutofinish(bool aAutofinish);
+ void QueueSetAutofinish(bool aAutofinish);
ProcessedMediaStream* AsProcessedStream() override { return this; }
friend class MediaStreamGraphImpl;
// Do not call these from outside MediaStreamGraph.cpp!
virtual void AddInput(MediaInputPort* aPort);
virtual void RemoveInput(MediaInputPort* aPort)
--- a/dom/media/mediasink/DecodedStream.cpp
+++ b/dom/media/mediasink/DecodedStream.cpp
@@ -707,17 +707,17 @@ DecodedStream::SendData()
SendVideo(mSameOrigin, mPrincipalHandle);
AdvanceTracks();
bool finished = (!mInfo.HasAudio() || mAudioQueue.IsFinished()) &&
(!mInfo.HasVideo() || mVideoQueue.IsFinished());
if (finished && !mData->mHaveSentFinish) {
mData->mHaveSentFinish = true;
- mData->mStream->Finish();
+ mData->mStream->FinishPending();
}
}
TimeUnit
DecodedStream::GetEndTime(TrackType aType) const
{
AssertOwnerThread();
if (aType == TrackInfo::kAudioTrack && mInfo.HasAudio() && mData) {
--- a/dom/media/mediasink/OutputStreamManager.cpp
+++ b/dom/media/mediasink/OutputStreamManager.cpp
@@ -75,17 +75,17 @@ void
OutputStreamManager::Add(ProcessedMediaStream* aStream, bool aFinishWhenEnded)
{
MOZ_ASSERT(NS_IsMainThread());
// All streams must belong to the same graph.
MOZ_ASSERT(!Graph() || Graph() == aStream->Graph());
// Ensure that aStream finishes the moment mDecodedStream does.
if (aFinishWhenEnded) {
- aStream->SetAutofinish(true);
+ aStream->QueueSetAutofinish(true);
}
OutputStreamData* p = mStreams.AppendElement();
p->Init(this, aStream);
// Connect to the input stream if we have one. Otherwise the output stream
// will be connected in Connect().
if (mInputStream) {