mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out changesets 3b8fdfefcf5e and ab61f99fb584 (bug 864083) for bustage on a CLOSED TREE.
This commit is contained in:
parent
d3ac3901cd
commit
c3f7907f13
@ -77,6 +77,11 @@ AnalyserNode::AnalyserNode(AudioContext* aContext)
|
|||||||
AllocateBuffer();
|
AllocateBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AnalyserNode::~AnalyserNode()
|
||||||
|
{
|
||||||
|
DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
AnalyserNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
AnalyserNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
{
|
{
|
||||||
@ -238,6 +243,12 @@ AnalyserNode::ApplyBlackmanWindow(float* aBuffer, uint32_t aSize)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AnalyserNode::DestroyMediaStream()
|
||||||
|
{
|
||||||
|
AudioNode::DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
AnalyserNode::AllocateBuffer()
|
AnalyserNode::AllocateBuffer()
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,7 @@ class AnalyserNode : public AudioNode
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit AnalyserNode(AudioContext* aContext);
|
explicit AnalyserNode(AudioContext* aContext);
|
||||||
|
virtual ~AnalyserNode();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
@ -28,6 +29,8 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void DestroyMediaStream() MOZ_OVERRIDE;
|
||||||
|
|
||||||
void GetFloatFrequencyData(Float32Array& aArray);
|
void GetFloatFrequencyData(Float32Array& aArray);
|
||||||
void GetByteFrequencyData(Uint8Array& aArray);
|
void GetByteFrequencyData(Uint8Array& aArray);
|
||||||
void GetByteTimeDomainData(Uint8Array& aArray);
|
void GetByteTimeDomainData(Uint8Array& aArray);
|
||||||
|
@ -165,7 +165,8 @@ StealJSArrayDataIntoThreadSharedFloatArrayBufferList(JSContext* aJSContext,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ThreadSharedFloatArrayBufferList*
|
ThreadSharedFloatArrayBufferList*
|
||||||
AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext)
|
AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext, uint32_t* aRate,
|
||||||
|
uint32_t* aLength)
|
||||||
{
|
{
|
||||||
if (!mSharedChannels) {
|
if (!mSharedChannels) {
|
||||||
// Steal JS data
|
// Steal JS data
|
||||||
@ -173,6 +174,8 @@ AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext)
|
|||||||
StealJSArrayDataIntoThreadSharedFloatArrayBufferList(aJSContext, mJSChannels);
|
StealJSArrayDataIntoThreadSharedFloatArrayBufferList(aJSContext, mJSChannels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*aLength = mLength;
|
||||||
|
*aRate = mSampleRate;
|
||||||
return mSharedChannels;
|
return mSharedChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,9 +89,12 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a ThreadSharedFloatArrayBufferList containing the sample data.
|
* Returns a ThreadSharedFloatArrayBufferList containing the sample data
|
||||||
|
* at aRate. Sets *aLength to the number of samples per channel.
|
||||||
*/
|
*/
|
||||||
ThreadSharedFloatArrayBufferList* GetThreadSharedChannelsForRate(JSContext* aContext);
|
ThreadSharedFloatArrayBufferList* GetThreadSharedChannelsForRate(JSContext* aContext,
|
||||||
|
uint32_t* aRate,
|
||||||
|
uint32_t* aLength);
|
||||||
|
|
||||||
// aContents should either come from JS_AllocateArrayBufferContents or
|
// aContents should either come from JS_AllocateArrayBufferContents or
|
||||||
// JS_StealArrayBufferContents.
|
// JS_StealArrayBufferContents.
|
||||||
|
@ -428,9 +428,11 @@ AudioBufferSourceNode::AudioBufferSourceNode(AudioContext* aContext)
|
|||||||
|
|
||||||
AudioBufferSourceNode::~AudioBufferSourceNode()
|
AudioBufferSourceNode::~AudioBufferSourceNode()
|
||||||
{
|
{
|
||||||
|
//
|
||||||
if (Context()) {
|
if (Context()) {
|
||||||
Context()->UnregisterAudioBufferSourceNode(this);
|
Context()->UnregisterAudioBufferSourceNode(this);
|
||||||
}
|
}
|
||||||
|
DestroyMediaStream();
|
||||||
}
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
@ -455,10 +457,10 @@ AudioBufferSourceNode::Start(JSContext* aCx, double aWhen, double aOffset,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
float rate = mBuffer->SampleRate();
|
uint32_t rate;
|
||||||
int32_t lengthSamples = mBuffer->Length();
|
uint32_t lengthSamples;
|
||||||
nsRefPtr<ThreadSharedFloatArrayBufferList> data =
|
nsRefPtr<ThreadSharedFloatArrayBufferList> data =
|
||||||
mBuffer->GetThreadSharedChannelsForRate(aCx);
|
mBuffer->GetThreadSharedChannelsForRate(aCx, &rate, &lengthSamples);
|
||||||
double length = double(lengthSamples) / rate;
|
double length = double(lengthSamples) / rate;
|
||||||
double offset = std::max(0.0, aOffset);
|
double offset = std::max(0.0, aOffset);
|
||||||
double endOffset = aDuration.WasPassed() ?
|
double endOffset = aDuration.WasPassed() ?
|
||||||
|
@ -20,6 +20,7 @@ class AudioBufferSourceNode : public AudioNode,
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit AudioBufferSourceNode(AudioContext* aContext);
|
explicit AudioBufferSourceNode(AudioContext* aContext);
|
||||||
|
virtual ~AudioBufferSourceNode();
|
||||||
|
|
||||||
virtual void DestroyMediaStream() MOZ_OVERRIDE
|
virtual void DestroyMediaStream() MOZ_OVERRIDE
|
||||||
{
|
{
|
||||||
|
@ -78,6 +78,8 @@ public:
|
|||||||
virtual ~AudioNode();
|
virtual ~AudioNode();
|
||||||
|
|
||||||
// This should be idempotent (safe to call multiple times).
|
// This should be idempotent (safe to call multiple times).
|
||||||
|
// This should be called in the destructor of every class that overrides
|
||||||
|
// this method.
|
||||||
virtual void DestroyMediaStream()
|
virtual void DestroyMediaStream()
|
||||||
{
|
{
|
||||||
if (mStream) {
|
if (mStream) {
|
||||||
|
@ -109,6 +109,11 @@ BiquadFilterNode::BiquadFilterNode(AudioContext* aContext)
|
|||||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BiquadFilterNode::~BiquadFilterNode()
|
||||||
|
{
|
||||||
|
DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
BiquadFilterNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
BiquadFilterNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
{
|
{
|
||||||
|
@ -33,6 +33,7 @@ class BiquadFilterNode : public AudioNode
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit BiquadFilterNode(AudioContext* aContext);
|
explicit BiquadFilterNode(AudioContext* aContext);
|
||||||
|
~BiquadFilterNode();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(BiquadFilterNode, AudioNode)
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(BiquadFilterNode, AudioNode)
|
||||||
|
@ -127,6 +127,11 @@ DynamicsCompressorNode::DynamicsCompressorNode(AudioContext* aContext)
|
|||||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DynamicsCompressorNode::~DynamicsCompressorNode()
|
||||||
|
{
|
||||||
|
DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
DynamicsCompressorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
DynamicsCompressorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,7 @@ class DynamicsCompressorNode : public AudioNode
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit DynamicsCompressorNode(AudioContext* aContext);
|
explicit DynamicsCompressorNode(AudioContext* aContext);
|
||||||
|
~DynamicsCompressorNode();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
|
||||||
|
@ -103,6 +103,11 @@ GainNode::GainNode(AudioContext* aContext)
|
|||||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GainNode::~GainNode()
|
||||||
|
{
|
||||||
|
DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
GainNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
GainNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,7 @@ class GainNode : public AudioNode
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit GainNode(AudioContext* aContext);
|
explicit GainNode(AudioContext* aContext);
|
||||||
|
virtual ~GainNode();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(GainNode, AudioNode)
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(GainNode, AudioNode)
|
||||||
|
@ -184,6 +184,7 @@ PannerNode::~PannerNode()
|
|||||||
if (Context()) {
|
if (Context()) {
|
||||||
Context()->UnregisterPannerNode(this);
|
Context()->UnregisterPannerNode(this);
|
||||||
}
|
}
|
||||||
|
DestroyMediaStream();
|
||||||
}
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include "AudioProcessingEvent.h"
|
#include "AudioProcessingEvent.h"
|
||||||
#include "WebAudioUtils.h"
|
#include "WebAudioUtils.h"
|
||||||
#include "mozilla/Mutex.h"
|
#include "mozilla/Mutex.h"
|
||||||
|
#include "mozilla/unused.h"
|
||||||
#include "mozilla/PodOperations.h"
|
#include "mozilla/PodOperations.h"
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
@ -303,7 +304,10 @@ private:
|
|||||||
// Steal the output buffers
|
// Steal the output buffers
|
||||||
nsRefPtr<ThreadSharedFloatArrayBufferList> output;
|
nsRefPtr<ThreadSharedFloatArrayBufferList> output;
|
||||||
if (event->HasOutputBuffer()) {
|
if (event->HasOutputBuffer()) {
|
||||||
output = event->OutputBuffer()->GetThreadSharedChannelsForRate(cx);
|
uint32_t rate, length;
|
||||||
|
output = event->OutputBuffer()->GetThreadSharedChannelsForRate(cx, &rate, &length);
|
||||||
|
unused << rate;
|
||||||
|
unused << length;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Append it to our output buffer queue
|
// Append it to our output buffer queue
|
||||||
@ -357,6 +361,11 @@ ScriptProcessorNode::ScriptProcessorNode(AudioContext* aContext,
|
|||||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScriptProcessorNode::~ScriptProcessorNode()
|
||||||
|
{
|
||||||
|
DestroyMediaStream();
|
||||||
|
}
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
ScriptProcessorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
ScriptProcessorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||||
{
|
{
|
||||||
|
@ -27,6 +27,7 @@ public:
|
|||||||
uint32_t aBufferSize,
|
uint32_t aBufferSize,
|
||||||
uint32_t aNumberOfInputChannels,
|
uint32_t aNumberOfInputChannels,
|
||||||
uint32_t aNumberOfOutputChannels);
|
uint32_t aNumberOfOutputChannels);
|
||||||
|
virtual ~ScriptProcessorNode();
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS_INHERITED
|
NS_DECL_ISUPPORTS_INHERITED
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user