mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
ff2971de14
Here is what this patch does: * Got rid of the JSBindingFinalized stuff * Made all nodes wrappercached * Started to hold a self reference while the AudioBufferSourceNode is playing back * Converted the input references to weak references * Got rid of all of the SetProduceOwnOutput and UpdateOutputEnded logic The nodes are now collected by the cycle collector which calls into DisconnectFromGraph which drops the references to other nodes and destroys the media stream. Note that most of the cycles that are now inherent in the ownership model are between nodes and their AudioParams (that is, the cycles not created by content.)
52 lines
1.0 KiB
C++
52 lines
1.0 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef DelayNode_h_
|
|
#define DelayNode_h_
|
|
|
|
#include "AudioNode.h"
|
|
#include "AudioParam.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class AudioContext;
|
|
|
|
class DelayNode : public AudioNode
|
|
{
|
|
public:
|
|
DelayNode(AudioContext* aContext, double aMaxDelay);
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DelayNode, AudioNode)
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx, JSObject* aScope);
|
|
|
|
AudioParam* DelayTime() const
|
|
{
|
|
return mDelay;
|
|
}
|
|
|
|
virtual bool SupportsMediaStreams() const MOZ_OVERRIDE
|
|
{
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
static void SendDelayToStream(AudioNode* aNode);
|
|
friend class DelayNodeEngine;
|
|
|
|
private:
|
|
nsRefPtr<AudioParam> mDelay;
|
|
SelfReference<DelayNode> mPlayingRef;
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|