mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-09 04:25:38 +00:00
bug 1081766 clear mDecoders in BreakCycles to save dispatching another task r=kinetik
--HG-- extra : rebase_source : 24cd218c1fe0bc4c67d6f9d94d98dfec1e3b497b extra : histedit_source : 43fd6a0c7d2ba766f8f9f4fdb8fcd5adc6e5ed02
This commit is contained in:
parent
2af6386af0
commit
ee59dd7387
@ -54,22 +54,17 @@ TrackBuffer::~TrackBuffer()
|
||||
class ReleaseDecoderTask : public nsRunnable {
|
||||
public:
|
||||
explicit ReleaseDecoderTask(SourceBufferDecoder* aDecoder)
|
||||
: mDecoder(aDecoder)
|
||||
{
|
||||
mDecoders.AppendElement(aDecoder);
|
||||
}
|
||||
|
||||
explicit ReleaseDecoderTask(nsTArray<nsRefPtr<SourceBufferDecoder>>& aDecoders)
|
||||
{
|
||||
mDecoders.SwapElements(aDecoders);
|
||||
}
|
||||
|
||||
NS_IMETHOD Run() MOZ_OVERRIDE MOZ_FINAL {
|
||||
mDecoders.Clear();
|
||||
mDecoder = nullptr;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
private:
|
||||
nsTArray<nsRefPtr<SourceBufferDecoder>> mDecoders;
|
||||
nsRefPtr<SourceBufferDecoder> mDecoder;
|
||||
};
|
||||
|
||||
void
|
||||
@ -397,11 +392,12 @@ TrackBuffer::ContainsTime(int64_t aTime)
|
||||
void
|
||||
TrackBuffer::BreakCycles()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
for (uint32_t i = 0; i < mDecoders.Length(); ++i) {
|
||||
mDecoders[i]->GetReader()->BreakCycles();
|
||||
}
|
||||
NS_DispatchToMainThread(new ReleaseDecoderTask(mDecoders));
|
||||
MOZ_ASSERT(mDecoders.IsEmpty());
|
||||
mDecoders.Clear();
|
||||
|
||||
// These are cleared in Shutdown()
|
||||
MOZ_ASSERT(mInitializedDecoders.IsEmpty());
|
||||
|
Loading…
x
Reference in New Issue
Block a user