Bug 1316211. P8 - fix MDSM::SizeOf{Audio,Video}Queue which should count its own queues.
MozReview-Commit-ID: HMtkZpMSf3L
--- a/dom/media/MediaDecoderReader.cpp
+++ b/dom/media/MediaDecoderReader.cpp
@@ -32,47 +32,16 @@ extern LazyLogModule gMediaDecoderLog;
#undef FMT
#undef DECODER_LOG
#undef DECODER_WARN
#define FMT(x, ...) "Decoder=%p " x, mDecoder, ##__VA_ARGS__
#define DECODER_LOG(...) MOZ_LOG(gMediaDecoderLog, LogLevel::Debug, (FMT(__VA_ARGS__)))
#define DECODER_WARN(...) NS_WARNING(nsPrintfCString(FMT(__VA_ARGS__)).get())
-class VideoQueueMemoryFunctor : public nsDequeFunctor {
-public:
- VideoQueueMemoryFunctor() : mSize(0) {}
-
- MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf);
-
- virtual void* operator()(void* aObject) {
- const VideoData* v = static_cast<const VideoData*>(aObject);
- mSize += v->SizeOfIncludingThis(MallocSizeOf);
- return nullptr;
- }
-
- size_t mSize;
-};
-
-
-class AudioQueueMemoryFunctor : public nsDequeFunctor {
-public:
- AudioQueueMemoryFunctor() : mSize(0) {}
-
- MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf);
-
- virtual void* operator()(void* aObject) {
- const AudioData* audioData = static_cast<const AudioData*>(aObject);
- mSize += audioData->SizeOfIncludingThis(MallocSizeOf);
- return nullptr;
- }
-
- size_t mSize;
-};
-
MediaDecoderReader::MediaDecoderReader(MediaDecoderReaderInit& aInit)
: mDecoder(aInit.mDecoder)
, mTaskQueue(new TaskQueue(
GetMediaThreadPool(MediaThreadType::PLAYBACK),
"MediaDecoderReader::mTaskQueue",
/* aSupportsTailDispatch = */ true))
, mBuffered(mTaskQueue, TimeIntervals(), "MediaDecoderReader::mBuffered (Canonical)")
, mShutdown(false)
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -3983,26 +3983,70 @@ void MediaDecoderStateMachine::RemoveOut
NewRunnableMethod<bool>("MediaDecoderStateMachine::SetAudioCaptured",
this,
&MediaDecoderStateMachine::SetAudioCaptured,
false);
OwnerThread()->Dispatch(r.forget());
}
}
+class VideoQueueMemoryFunctor : public nsDequeFunctor
+{
+public:
+ VideoQueueMemoryFunctor()
+ : mSize(0)
+ {
+ }
+
+ MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf);
+
+ virtual void* operator()(void* aObject)
+ {
+ const VideoData* v = static_cast<const VideoData*>(aObject);
+ mSize += v->SizeOfIncludingThis(MallocSizeOf);
+ return nullptr;
+ }
+
+ size_t mSize;
+};
+
+class AudioQueueMemoryFunctor : public nsDequeFunctor
+{
+public:
+ AudioQueueMemoryFunctor()
+ : mSize(0)
+ {
+ }
+
+ MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf);
+
+ virtual void* operator()(void* aObject)
+ {
+ const AudioData* audioData = static_cast<const AudioData*>(aObject);
+ mSize += audioData->SizeOfIncludingThis(MallocSizeOf);
+ return nullptr;
+ }
+
+ size_t mSize;
+};
+
size_t
MediaDecoderStateMachine::SizeOfVideoQueue() const
{
- return mReader->SizeOfVideoQueueInBytes();
+ VideoQueueMemoryFunctor functor;
+ mVideoQueue.LockedForEach(functor);
+ return functor.mSize;
}
size_t
MediaDecoderStateMachine::SizeOfAudioQueue() const
{
- return mReader->SizeOfAudioQueueInBytes();
+ AudioQueueMemoryFunctor functor;
+ mAudioQueue.LockedForEach(functor);
+ return functor.mSize;
}
AbstractCanonical<media::TimeIntervals>*
MediaDecoderStateMachine::CanonicalBuffered() const
{
return mReader->CanonicalBuffered();
}