mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-19 23:07:33 +09:00
[media] Use RefPtr<TrackBuffersManager> instead of raw pointers
This commit is contained in:
parent
83ecbdfacb
commit
eb44f633ee
3 changed files with 28 additions and 25 deletions
|
|
@ -62,7 +62,7 @@ MediaSourceDemuxer::AddSizeOfResources(MediaSourceDecoder::ResourceSizes* aSizes
|
|||
RefPtr<MediaSourceDecoder::ResourceSizes> sizes = aSizes;
|
||||
nsCOMPtr<nsIRunnable> task =
|
||||
NS_NewRunnableFunction([self, sizes] () {
|
||||
for (TrackBuffersManager* manager : self->mSourceBuffers) {
|
||||
for (const RefPtr<TrackBuffersManager>& manager : self->mSourceBuffers) {
|
||||
manager->AddSizeOfResources(sizes);
|
||||
}
|
||||
});
|
||||
|
|
@ -171,42 +171,45 @@ MediaSourceDemuxer::GetCrypto()
|
|||
}
|
||||
|
||||
void
|
||||
MediaSourceDemuxer::AttachSourceBuffer(TrackBuffersManager* aSourceBuffer)
|
||||
MediaSourceDemuxer::AttachSourceBuffer(
|
||||
RefPtr<TrackBuffersManager>& aSourceBuffer)
|
||||
{
|
||||
nsCOMPtr<nsIRunnable> task =
|
||||
NewRunnableMethod<TrackBuffersManager*>(
|
||||
nsCOMPtr<nsIRunnable> task = NewRunnableMethod<RefPtr<TrackBuffersManager>&&>(
|
||||
this, &MediaSourceDemuxer::DoAttachSourceBuffer,
|
||||
aSourceBuffer);
|
||||
GetTaskQueue()->Dispatch(task.forget());
|
||||
}
|
||||
|
||||
void
|
||||
MediaSourceDemuxer::DoAttachSourceBuffer(mozilla::TrackBuffersManager* aSourceBuffer)
|
||||
MediaSourceDemuxer::DoAttachSourceBuffer(
|
||||
RefPtr<mozilla::TrackBuffersManager>&& aSourceBuffer)
|
||||
{
|
||||
MOZ_ASSERT(OnTaskQueue());
|
||||
mSourceBuffers.AppendElement(aSourceBuffer);
|
||||
mSourceBuffers.AppendElement(Move(aSourceBuffer));
|
||||
ScanSourceBuffersForContent();
|
||||
}
|
||||
|
||||
void
|
||||
MediaSourceDemuxer::DetachSourceBuffer(TrackBuffersManager* aSourceBuffer)
|
||||
MediaSourceDemuxer::DetachSourceBuffer(
|
||||
RefPtr<TrackBuffersManager>& aSourceBuffer)
|
||||
{
|
||||
nsCOMPtr<nsIRunnable> task =
|
||||
NewRunnableMethod<TrackBuffersManager*>(
|
||||
this, &MediaSourceDemuxer::DoDetachSourceBuffer,
|
||||
aSourceBuffer);
|
||||
RefPtr<MediaSourceDemuxer> self = this;
|
||||
nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction(
|
||||
[self, aSourceBuffer]() {
|
||||
self->DoDetachSourceBuffer(aSourceBuffer);
|
||||
});
|
||||
GetTaskQueue()->Dispatch(task.forget());
|
||||
}
|
||||
|
||||
void
|
||||
MediaSourceDemuxer::DoDetachSourceBuffer(TrackBuffersManager* aSourceBuffer)
|
||||
MediaSourceDemuxer::DoDetachSourceBuffer(
|
||||
const RefPtr<TrackBuffersManager>& aSourceBuffer)
|
||||
{
|
||||
MOZ_ASSERT(OnTaskQueue());
|
||||
for (uint32_t i = 0; i < mSourceBuffers.Length(); i++) {
|
||||
if (mSourceBuffers[i].get() == aSourceBuffer) {
|
||||
mSourceBuffers.RemoveElementAt(i);
|
||||
}
|
||||
}
|
||||
mSourceBuffers.RemoveElementsBy(
|
||||
[&aSourceBuffer](const RefPtr<TrackBuffersManager> aLinkedSourceBuffer) {
|
||||
return aLinkedSourceBuffer == aSourceBuffer;
|
||||
});
|
||||
if (aSourceBuffer == mAudioTrack) {
|
||||
mAudioTrack = nullptr;
|
||||
}
|
||||
|
|
@ -230,7 +233,7 @@ MediaSourceDemuxer::GetTrackInfo(TrackType aTrack)
|
|||
}
|
||||
}
|
||||
|
||||
TrackBuffersManager*
|
||||
RefPtr<TrackBuffersManager>
|
||||
MediaSourceDemuxer::GetManager(TrackType aTrack)
|
||||
{
|
||||
MonitorAutoLock mon(mMonitor);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue