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();
|
||||
}
|
||||
|
||||
AnalyserNode::~AnalyserNode()
|
||||
{
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
AnalyserNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||
{
|
||||
@ -238,6 +243,12 @@ AnalyserNode::ApplyBlackmanWindow(float* aBuffer, uint32_t aSize)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AnalyserNode::DestroyMediaStream()
|
||||
{
|
||||
AudioNode::DestroyMediaStream();
|
||||
}
|
||||
|
||||
bool
|
||||
AnalyserNode::AllocateBuffer()
|
||||
{
|
||||
|
@ -18,6 +18,7 @@ class AnalyserNode : public AudioNode
|
||||
{
|
||||
public:
|
||||
explicit AnalyserNode(AudioContext* aContext);
|
||||
virtual ~AnalyserNode();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
@ -28,6 +29,8 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual void DestroyMediaStream() MOZ_OVERRIDE;
|
||||
|
||||
void GetFloatFrequencyData(Float32Array& aArray);
|
||||
void GetByteFrequencyData(Uint8Array& aArray);
|
||||
void GetByteTimeDomainData(Uint8Array& aArray);
|
||||
|
@ -165,7 +165,8 @@ StealJSArrayDataIntoThreadSharedFloatArrayBufferList(JSContext* aJSContext,
|
||||
}
|
||||
|
||||
ThreadSharedFloatArrayBufferList*
|
||||
AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext)
|
||||
AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext, uint32_t* aRate,
|
||||
uint32_t* aLength)
|
||||
{
|
||||
if (!mSharedChannels) {
|
||||
// Steal JS data
|
||||
@ -173,6 +174,8 @@ AudioBuffer::GetThreadSharedChannelsForRate(JSContext* aJSContext)
|
||||
StealJSArrayDataIntoThreadSharedFloatArrayBufferList(aJSContext, mJSChannels);
|
||||
}
|
||||
|
||||
*aLength = mLength;
|
||||
*aRate = mSampleRate;
|
||||
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
|
||||
// JS_StealArrayBufferContents.
|
||||
|
@ -428,9 +428,11 @@ AudioBufferSourceNode::AudioBufferSourceNode(AudioContext* aContext)
|
||||
|
||||
AudioBufferSourceNode::~AudioBufferSourceNode()
|
||||
{
|
||||
//
|
||||
if (Context()) {
|
||||
Context()->UnregisterAudioBufferSourceNode(this);
|
||||
}
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
@ -455,10 +457,10 @@ AudioBufferSourceNode::Start(JSContext* aCx, double aWhen, double aOffset,
|
||||
return;
|
||||
}
|
||||
|
||||
float rate = mBuffer->SampleRate();
|
||||
int32_t lengthSamples = mBuffer->Length();
|
||||
uint32_t rate;
|
||||
uint32_t lengthSamples;
|
||||
nsRefPtr<ThreadSharedFloatArrayBufferList> data =
|
||||
mBuffer->GetThreadSharedChannelsForRate(aCx);
|
||||
mBuffer->GetThreadSharedChannelsForRate(aCx, &rate, &lengthSamples);
|
||||
double length = double(lengthSamples) / rate;
|
||||
double offset = std::max(0.0, aOffset);
|
||||
double endOffset = aDuration.WasPassed() ?
|
||||
|
@ -20,6 +20,7 @@ class AudioBufferSourceNode : public AudioNode,
|
||||
{
|
||||
public:
|
||||
explicit AudioBufferSourceNode(AudioContext* aContext);
|
||||
virtual ~AudioBufferSourceNode();
|
||||
|
||||
virtual void DestroyMediaStream() MOZ_OVERRIDE
|
||||
{
|
||||
|
@ -78,6 +78,8 @@ public:
|
||||
virtual ~AudioNode();
|
||||
|
||||
// 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()
|
||||
{
|
||||
if (mStream) {
|
||||
|
@ -109,6 +109,11 @@ BiquadFilterNode::BiquadFilterNode(AudioContext* aContext)
|
||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||
}
|
||||
|
||||
BiquadFilterNode::~BiquadFilterNode()
|
||||
{
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
BiquadFilterNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||
{
|
||||
|
@ -33,6 +33,7 @@ class BiquadFilterNode : public AudioNode
|
||||
{
|
||||
public:
|
||||
explicit BiquadFilterNode(AudioContext* aContext);
|
||||
~BiquadFilterNode();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(BiquadFilterNode, AudioNode)
|
||||
|
@ -127,6 +127,11 @@ DynamicsCompressorNode::DynamicsCompressorNode(AudioContext* aContext)
|
||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||
}
|
||||
|
||||
DynamicsCompressorNode::~DynamicsCompressorNode()
|
||||
{
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
DynamicsCompressorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||
{
|
||||
|
@ -19,6 +19,7 @@ class DynamicsCompressorNode : public AudioNode
|
||||
{
|
||||
public:
|
||||
explicit DynamicsCompressorNode(AudioContext* aContext);
|
||||
~DynamicsCompressorNode();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DynamicsCompressorNode, AudioNode)
|
||||
|
@ -103,6 +103,11 @@ GainNode::GainNode(AudioContext* aContext)
|
||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||
}
|
||||
|
||||
GainNode::~GainNode()
|
||||
{
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
GainNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||
{
|
||||
|
@ -19,6 +19,7 @@ class GainNode : public AudioNode
|
||||
{
|
||||
public:
|
||||
explicit GainNode(AudioContext* aContext);
|
||||
virtual ~GainNode();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(GainNode, AudioNode)
|
||||
|
@ -184,6 +184,7 @@ PannerNode::~PannerNode()
|
||||
if (Context()) {
|
||||
Context()->UnregisterPannerNode(this);
|
||||
}
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "AudioProcessingEvent.h"
|
||||
#include "WebAudioUtils.h"
|
||||
#include "mozilla/Mutex.h"
|
||||
#include "mozilla/unused.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include <deque>
|
||||
|
||||
@ -303,7 +304,10 @@ private:
|
||||
// Steal the output buffers
|
||||
nsRefPtr<ThreadSharedFloatArrayBufferList> output;
|
||||
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
|
||||
@ -357,6 +361,11 @@ ScriptProcessorNode::ScriptProcessorNode(AudioContext* aContext,
|
||||
engine->SetSourceStream(static_cast<AudioNodeStream*> (mStream.get()));
|
||||
}
|
||||
|
||||
ScriptProcessorNode::~ScriptProcessorNode()
|
||||
{
|
||||
DestroyMediaStream();
|
||||
}
|
||||
|
||||
JSObject*
|
||||
ScriptProcessorNode::WrapObject(JSContext* aCx, JSObject* aScope)
|
||||
{
|
||||
|
@ -27,6 +27,7 @@ public:
|
||||
uint32_t aBufferSize,
|
||||
uint32_t aNumberOfInputChannels,
|
||||
uint32_t aNumberOfOutputChannels);
|
||||
virtual ~ScriptProcessorNode();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user