| Index: trunk/Source/platform/mediastream/MediaStreamSource.cpp
|
| ===================================================================
|
| --- trunk/Source/platform/mediastream/MediaStreamSource.cpp (revision 183662)
|
| +++ trunk/Source/platform/mediastream/MediaStreamSource.cpp (working copy)
|
| @@ -34,38 +34,11 @@
|
|
|
| namespace blink {
|
|
|
| -// The disposer pattern actually makes the deletion of the extra data happen
|
| -// earlier and not later. The disposer makes sure that the extra data is
|
| -// destructed in weak processing which is run before sweeping and therefore
|
| -// all the objects are still alive and can be touched.
|
| -//
|
| -// FIXME: Oilpan: This disposer pattern is duplicated in a lot of places.
|
| -// We should create a good abstraction class for this and remove the code duplication.
|
| -class MediaStreamSourceDisposer {
|
| -public:
|
| - explicit MediaStreamSourceDisposer(MediaStreamSource& source) : m_source(source) { }
|
| - ~MediaStreamSourceDisposer()
|
| - {
|
| - m_source.dispose();
|
| - }
|
| -
|
| -private:
|
| - MediaStreamSource& m_source;
|
| -};
|
| -
|
| -typedef HeapHashMap<WeakMember<MediaStreamSource>, OwnPtr<MediaStreamSourceDisposer> > SourceDisposers;
|
| -
|
| -static SourceDisposers& sourceDisposers()
|
| +PassRefPtr<MediaStreamSource> MediaStreamSource::create(const String& id, Type type, const String& name, ReadyState readyState, bool requiresConsumer)
|
| {
|
| - DEFINE_STATIC_LOCAL(Persistent<SourceDisposers>, disposers, (new SourceDisposers));
|
| - return *disposers;
|
| + return adoptRef(new MediaStreamSource(id, type, name, readyState, requiresConsumer));
|
| }
|
|
|
| -MediaStreamSource* MediaStreamSource::create(const String& id, Type type, const String& name, ReadyState readyState, bool requiresConsumer)
|
| -{
|
| - return new MediaStreamSource(id, type, name, readyState, requiresConsumer);
|
| -}
|
| -
|
| MediaStreamSource::MediaStreamSource(const String& id, Type type, const String& name, ReadyState readyState, bool requiresConsumer)
|
| : m_id(id)
|
| , m_type(type)
|
| @@ -73,29 +46,29 @@
|
| , m_readyState(readyState)
|
| , m_requiresConsumer(requiresConsumer)
|
| {
|
| - sourceDisposers().add(this, adoptPtr(new MediaStreamSourceDisposer(*this)));
|
| }
|
|
|
| -void MediaStreamSource::dispose()
|
| -{
|
| - m_extraData = nullptr;
|
| -}
|
| -
|
| void MediaStreamSource::setReadyState(ReadyState readyState)
|
| {
|
| if (m_readyState != ReadyStateEnded && m_readyState != readyState) {
|
| m_readyState = readyState;
|
| - for (HeapHashSet<WeakMember<Observer> >::iterator i = m_observers.begin(); i != m_observers.end(); ++i)
|
| + for (Vector<Observer*>::iterator i = m_observers.begin(); i != m_observers.end(); ++i)
|
| (*i)->sourceChangedState();
|
| }
|
| }
|
|
|
| void MediaStreamSource::addObserver(MediaStreamSource::Observer* observer)
|
| {
|
| - ASSERT(!m_observers.contains(observer));
|
| - m_observers.add(observer);
|
| + m_observers.append(observer);
|
| }
|
|
|
| +void MediaStreamSource::removeObserver(MediaStreamSource::Observer* observer)
|
| +{
|
| + size_t pos = m_observers.find(observer);
|
| + if (pos != kNotFound)
|
| + m_observers.remove(pos);
|
| +}
|
| +
|
| void MediaStreamSource::addAudioConsumer(AudioDestinationConsumer* consumer)
|
| {
|
| ASSERT(m_requiresConsumer);
|
| @@ -130,11 +103,4 @@
|
| (*it)->consumeAudio(bus, numberOfFrames);
|
| }
|
|
|
| -void MediaStreamSource::trace(Visitor* visitor)
|
| -{
|
| - visitor->trace(m_observers);
|
| - visitor->trace(m_audioConsumers);
|
| -}
|
| -
|
| } // namespace blink
|
| -
|
|
|