summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dom/canvas/WebGLShaderValidator.cpp9
-rw-r--r--dom/media/mediasource/MediaSourceDemuxer.cpp39
-rw-r--r--dom/media/mediasource/MediaSourceDemuxer.h10
-rw-r--r--dom/media/mediasource/SourceBuffer.cpp4
4 files changed, 35 insertions, 27 deletions
diff --git a/dom/canvas/WebGLShaderValidator.cpp b/dom/canvas/WebGLShaderValidator.cpp
index bf2df82f71..7ea9f11a70 100644
--- a/dom/canvas/WebGLShaderValidator.cpp
+++ b/dom/canvas/WebGLShaderValidator.cpp
@@ -9,6 +9,7 @@
#include "angle/ShaderLang.h"
#include "gfxPrefs.h"
#include "GLContext.h"
+#include "mozilla/gfx/Logging.h"
#include "mozilla/Preferences.h"
#include "MurmurHash3.h"
#include "nsPrintfCString.h"
@@ -135,9 +136,13 @@ ShaderOutput(gl::GLContext* gl)
case 420: return SH_GLSL_420_CORE_OUTPUT;
case 430: return SH_GLSL_430_CORE_OUTPUT;
case 440: return SH_GLSL_440_CORE_OUTPUT;
- case 450: return SH_GLSL_450_CORE_OUTPUT;
default:
- MOZ_ASSERT(false, "GFX: Unexpected GLSL version.");
+ if (version >= 450) {
+ // "OpenGL 4.6 is also guaranteed to support all previous versions of the
+ // OpenGL Shading Language back to version 1.10."
+ return SH_GLSL_450_CORE_OUTPUT;
+ }
+ gfxCriticalNote << "Unexpected GLSL version: " << version;
}
}
diff --git a/dom/media/mediasource/MediaSourceDemuxer.cpp b/dom/media/mediasource/MediaSourceDemuxer.cpp
index cace222167..4c8f1d0c94 100644
--- a/dom/media/mediasource/MediaSourceDemuxer.cpp
+++ b/dom/media/mediasource/MediaSourceDemuxer.cpp
@@ -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);
diff --git a/dom/media/mediasource/MediaSourceDemuxer.h b/dom/media/mediasource/MediaSourceDemuxer.h
index e9db46196c..1518364c33 100644
--- a/dom/media/mediasource/MediaSourceDemuxer.h
+++ b/dom/media/mediasource/MediaSourceDemuxer.h
@@ -45,8 +45,8 @@ public:
void NotifyDataArrived() override;
/* interface for TrackBuffersManager */
- void AttachSourceBuffer(TrackBuffersManager* aSourceBuffer);
- void DetachSourceBuffer(TrackBuffersManager* aSourceBuffer);
+ void AttachSourceBuffer(RefPtr<TrackBuffersManager>& aSourceBuffer);
+ void DetachSourceBuffer(RefPtr<TrackBuffersManager>& aSourceBuffer);
AutoTaskQueue* GetTaskQueue() { return mTaskQueue; }
// Returns a string describing the state of the MediaSource internal
@@ -64,10 +64,10 @@ private:
// Scan source buffers and update information.
bool ScanSourceBuffersForContent();
RefPtr<InitPromise> AttemptInit();
- TrackBuffersManager* GetManager(TrackInfo::TrackType aType);
+ RefPtr<TrackBuffersManager> GetManager(TrackInfo::TrackType aType);
TrackInfo* GetTrackInfo(TrackInfo::TrackType);
- void DoAttachSourceBuffer(TrackBuffersManager* aSourceBuffer);
- void DoDetachSourceBuffer(TrackBuffersManager* aSourceBuffer);
+ void DoAttachSourceBuffer(RefPtr<TrackBuffersManager>&& aSourceBuffer);
+ void DoDetachSourceBuffer(const RefPtr<TrackBuffersManager>& aSourceBuffer);
bool OnTaskQueue()
{
return !GetTaskQueue() || GetTaskQueue()->IsCurrentThreadIn();
diff --git a/dom/media/mediasource/SourceBuffer.cpp b/dom/media/mediasource/SourceBuffer.cpp
index 26ea937077..0bdfbfcf23 100644
--- a/dom/media/mediasource/SourceBuffer.cpp
+++ b/dom/media/mediasource/SourceBuffer.cpp
@@ -281,7 +281,7 @@ SourceBuffer::Detach()
if (mTrackBuffersManager) {
mTrackBuffersManager->Detach();
mMediaSource->GetDecoder()->GetDemuxer()->DetachSourceBuffer(
- mTrackBuffersManager.get());
+ mTrackBuffersManager);
}
mTrackBuffersManager = nullptr;
mMediaSource = nullptr;
@@ -321,7 +321,7 @@ SourceBuffer::SourceBuffer(MediaSource* aMediaSource, const nsACString& aType)
SetMode(SourceBufferAppendMode::Segments, dummy);
}
mMediaSource->GetDecoder()->GetDemuxer()->AttachSourceBuffer(
- mTrackBuffersManager.get());
+ mTrackBuffersManager);
}
SourceBuffer::~SourceBuffer()