зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1264694: [MSE] P3. Remove no longer necessay methods. r=jwwang
P2 let all tasks run until completion, as such we don't need to deal with interrupted tasks anymore. MozReview-Commit-ID: 45lYcIGk2ce --HG-- extra : rebase_source : db9c8db1b3f1d51d57ad090fdeb2cad6682de2be
This commit is contained in:
Родитель
62469ee531
Коммит
a240a3d77e
|
@ -111,7 +111,6 @@ TrackBuffersManager::TrackBuffersManager(MediaSourceDecoder* aParentDecoder,
|
|||
|
||||
TrackBuffersManager::~TrackBuffersManager()
|
||||
{
|
||||
CancelAllTasks();
|
||||
ShutdownDemuxers();
|
||||
}
|
||||
|
||||
|
@ -213,43 +212,6 @@ TrackBuffersManager::ProcessTasks()
|
|||
}
|
||||
}
|
||||
|
||||
// A PromiseHolder will assert upon destruction if it has a pending promise
|
||||
// that hasn't been completed. It is possible that a task didn't get processed
|
||||
// due to the owning SourceBuffer having shutdown.
|
||||
// We resolve/reject all pending promises and remove all pending tasks from the
|
||||
// queue.
|
||||
void
|
||||
TrackBuffersManager::CancelAllTasks()
|
||||
{
|
||||
typedef SourceBufferTask::Type Type;
|
||||
|
||||
if (mCurrentTask) {
|
||||
mQueue.Push(mCurrentTask);
|
||||
mCurrentTask = nullptr;
|
||||
}
|
||||
|
||||
RefPtr<SourceBufferTask> task;
|
||||
while ((task = mQueue.Pop())) {
|
||||
switch (task->GetType()) {
|
||||
case Type::AppendBuffer:
|
||||
task->As<AppendBufferTask>()->mPromise.RejectIfExists(NS_ERROR_ABORT, __func__);
|
||||
break;
|
||||
case Type::RangeRemoval:
|
||||
task->As<RangeRemovalTask>()->mPromise.ResolveIfExists(false, __func__);
|
||||
break;
|
||||
case Type::EvictData:
|
||||
break;
|
||||
case Type::Abort:
|
||||
// not handled yet, and probably never.
|
||||
break;
|
||||
case Type::Reset:
|
||||
break;
|
||||
default:
|
||||
NS_WARNING("Invalid Task");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The MSE spec requires that we abort the current SegmentParserLoop
|
||||
// which is then followed by a call to ResetParserState.
|
||||
// However due to our asynchronous design this causes inherent difficulties.
|
||||
|
|
|
@ -35,6 +35,10 @@ public:
|
|||
SourceBufferTaskQueue()
|
||||
: mMonitor("SourceBufferTaskQueue")
|
||||
{}
|
||||
~SourceBufferTaskQueue()
|
||||
{
|
||||
MOZ_ASSERT(mQueue.IsEmpty(), "All tasks must have been processed");
|
||||
}
|
||||
|
||||
void Push(SourceBufferTask* aTask)
|
||||
{
|
||||
|
@ -380,7 +384,6 @@ private:
|
|||
SourceBufferTaskQueue mQueue;
|
||||
void QueueTask(SourceBufferTask* aTask);
|
||||
void ProcessTasks();
|
||||
void CancelAllTasks();
|
||||
// Set if the TrackBuffersManager is currently processing a task.
|
||||
// At this stage, this task is always a AppendBufferTask.
|
||||
RefPtr<SourceBufferTask> mCurrentTask;
|
||||
|
|
Загрузка…
Ссылка в новой задаче