Changeset 158270 in webkit
- Timestamp:
- Oct 30, 2013 8:53:49 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r158269 r158270 1 2013-10-30 Jer Noble <jer.noble@apple.com> 2 3 [MSE] Make MediaSourcePrivate, SourceBufferPrivate classes RefCounted. 4 https://bugs.webkit.org/show_bug.cgi?id=123350 5 6 Reviewed by Darin Adler. 7 8 Make the MediaSourcePrivate and SourceBufferPrivate classes RefCounted so that 9 they can be referenced both by MediaSource/SourceBuffer, and by the MediaPlayerPrivate 10 which creates them. 11 12 Change OwnPtr -> RefPtr everywhere: 13 * Modules/mediasource/MediaSource.cpp: 14 (WebCore::MediaSource::addSourceBuffer): 15 * Modules/mediasource/MediaSourceBase.cpp: 16 (WebCore::MediaSourceBase::setPrivateAndOpen): 17 (WebCore::MediaSourceBase::createSourceBufferPrivate): 18 * Modules/mediasource/MediaSourceBase.h: 19 * Modules/mediasource/SourceBuffer.cpp: 20 (WebCore::SourceBuffer::create): 21 (WebCore::SourceBuffer::SourceBuffer): 22 * Modules/mediasource/SourceBuffer.h: 23 * Modules/mediasource/WebKitMediaSource.cpp: 24 (WebCore::WebKitMediaSource::addSourceBuffer): 25 * Modules/mediasource/WebKitSourceBuffer.cpp: 26 (WebCore::WebKitSourceBuffer::create): 27 (WebCore::WebKitSourceBuffer::WebKitSourceBuffer): 28 * Modules/mediasource/WebKitSourceBuffer.h: 29 * html/HTMLMediaSource.h: 30 * platform/graphics/MediaSourcePrivate.h: 31 * platform/graphics/SourceBufferPrivate.h: 32 (WebCore::SourceBufferPrivate::SourceBufferPrivate): 33 1 34 2013-10-30 Allan Sandfeld Jensen <allan.jensen@digia.com> 2 35 -
trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp
r157653 r158270 97 97 ContentType contentType(type); 98 98 Vector<String> codecs = contentType.codecs(); 99 OwnPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType.type(), codecs, ec);99 RefPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType, ec); 100 100 101 101 if (!sourceBufferPrivate) { … … 106 106 } 107 107 108 RefPtr<SourceBuffer> buffer = SourceBuffer::create(sourceBufferPrivate.release (), this);108 RefPtr<SourceBuffer> buffer = SourceBuffer::create(sourceBufferPrivate.releaseNonNull(), this); 109 109 // 6. Add the new object to sourceBuffers and fire a addsourcebuffer on that object. 110 110 m_sourceBuffers->add(buffer); -
trunk/Source/WebCore/Modules/mediasource/MediaSourceBase.cpp
r157653 r158270 76 76 } 77 77 78 void MediaSourceBase::setPrivateAndOpen(PassOwnPtr<MediaSourcePrivate> mediaSourcePrivate) 79 { 80 ASSERT(mediaSourcePrivate); 78 void MediaSourceBase::setPrivateAndOpen(PassRef<MediaSourcePrivate> mediaSourcePrivate) 79 { 81 80 ASSERT(!m_private); 82 81 ASSERT(m_attached); 83 m_private = mediaSourcePrivate;82 m_private = std::move(mediaSourcePrivate); 84 83 setReadyState(openKeyword()); 85 84 } … … 258 257 } 259 258 260 PassOwnPtr<SourceBufferPrivate> MediaSourceBase::createSourceBufferPrivate(const String& type, const MediaSourcePrivate::CodecsArray& codecs, ExceptionCode& ec)261 { 262 OwnPtr<SourceBufferPrivate> sourceBufferPrivate;263 switch (m_private->addSourceBuffer(type, codecs, &sourceBufferPrivate)) {259 RefPtr<SourceBufferPrivate> MediaSourceBase::createSourceBufferPrivate(const ContentType& type, ExceptionCode& ec) 260 { 261 RefPtr<SourceBufferPrivate> sourceBufferPrivate; 262 switch (m_private->addSourceBuffer(type, sourceBufferPrivate)) { 264 263 case MediaSourcePrivate::Ok: { 265 return sourceBufferPrivate .release();264 return sourceBufferPrivate; 266 265 } 267 266 case MediaSourcePrivate::NotSupported: -
trunk/Source/WebCore/Modules/mediasource/MediaSourceBase.h
r157653 r158270 63 63 // HTMLMediaSource 64 64 virtual bool attachToElement() OVERRIDE; 65 virtual void setPrivateAndOpen(Pass OwnPtr<MediaSourcePrivate>) OVERRIDE;65 virtual void setPrivateAndOpen(PassRef<MediaSourcePrivate>) OVERRIDE; 66 66 virtual void close() OVERRIDE; 67 67 virtual bool isClosed() const OVERRIDE; … … 98 98 virtual Vector<RefPtr<TimeRanges>> activeRanges() const = 0; 99 99 100 PassOwnPtr<SourceBufferPrivate> createSourceBufferPrivate(const String& type, const MediaSourcePrivate::CodecsArray&, ExceptionCode&);100 RefPtr<SourceBufferPrivate> createSourceBufferPrivate(const ContentType&, ExceptionCode&); 101 101 void scheduleEvent(const AtomicString& eventName); 102 102 GenericEventQueue& asyncEventQueue() { return m_asyncEventQueue; } 103 103 104 104 private: 105 OwnPtr<MediaSourcePrivate> m_private;105 RefPtr<MediaSourcePrivate> m_private; 106 106 AtomicString m_readyState; 107 107 GenericEventQueue m_asyncEventQueue; -
trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp
r156413 r158270 43 43 namespace WebCore { 44 44 45 PassRef Ptr<SourceBuffer> SourceBuffer::create(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)46 { 47 RefPtr<SourceBuffer> sourceBuffer(adoptRef(new SourceBuffer(s ourceBufferPrivate, source)));45 PassRef<SourceBuffer> SourceBuffer::create(PassRef<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source) 46 { 47 RefPtr<SourceBuffer> sourceBuffer(adoptRef(new SourceBuffer(std::move(sourceBufferPrivate), source))); 48 48 sourceBuffer->suspendIfNeeded(); 49 return sourceBuffer.release ();50 } 51 52 SourceBuffer::SourceBuffer(Pass OwnPtr<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source)49 return sourceBuffer.releaseNonNull(); 50 } 51 52 SourceBuffer::SourceBuffer(PassRef<SourceBufferPrivate> sourceBufferPrivate, MediaSource* source) 53 53 : ActiveDOMObject(source->scriptExecutionContext()) 54 , m_private(s ourceBufferPrivate)54 , m_private(std::move(sourceBufferPrivate)) 55 55 , m_source(source) 56 56 , m_asyncEventQueue(*this) -
trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h
r156719 r158270 52 52 class SourceBuffer FINAL : public RefCounted<SourceBuffer>, public ActiveDOMObject, public EventTargetWithInlineData, public ScriptWrappable { 53 53 public: 54 static PassRef Ptr<SourceBuffer> create(PassOwnPtr<SourceBufferPrivate>, MediaSource*);54 static PassRef<SourceBuffer> create(PassRef<SourceBufferPrivate>, MediaSource*); 55 55 56 56 virtual ~SourceBuffer(); … … 85 85 86 86 private: 87 SourceBuffer(Pass OwnPtr<SourceBufferPrivate>, MediaSource*);87 SourceBuffer(PassRef<SourceBufferPrivate>, MediaSource*); 88 88 89 89 bool isRemoved() const; … … 93 93 void appendBufferTimerFired(Timer<SourceBuffer>*); 94 94 95 OwnPtr<SourceBufferPrivate> m_private;95 RefPtr<SourceBufferPrivate> m_private; 96 96 MediaSource* m_source; 97 97 GenericEventQueue m_asyncEventQueue; -
trunk/Source/WebCore/Modules/mediasource/WebKitMediaSource.cpp
r157653 r158270 48 48 RefPtr<WebKitMediaSource> mediaSource(adoptRef(new WebKitMediaSource(context))); 49 49 mediaSource->suspendIfNeeded(); 50 return mediaSource.release ();50 return mediaSource.releaseNonNull(); 51 51 } 52 52 … … 97 97 ContentType contentType(type); 98 98 Vector<String> codecs = contentType.codecs(); 99 OwnPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType.type(), codecs, ec);99 RefPtr<SourceBufferPrivate> sourceBufferPrivate = createSourceBufferPrivate(contentType, ec); 100 100 if (!sourceBufferPrivate) 101 101 return 0; 102 102 103 RefPtr<WebKitSourceBuffer> buffer = WebKitSourceBuffer::create(sourceBufferPrivate.release (),this);103 RefPtr<WebKitSourceBuffer> buffer = WebKitSourceBuffer::create(sourceBufferPrivate.releaseNonNull(), *this); 104 104 // 6. Add the new object to sourceBuffers and fire a addsourcebuffer on that object. 105 105 m_sourceBuffers->add(buffer); -
trunk/Source/WebCore/Modules/mediasource/WebKitSourceBuffer.cpp
r156049 r158270 41 41 namespace WebCore { 42 42 43 PassRef Ptr<WebKitSourceBuffer> WebKitSourceBuffer::create(PassOwnPtr<SourceBufferPrivate> sourceBufferPrivate, PassRefPtr<WebKitMediaSource> source)43 PassRef<WebKitSourceBuffer> WebKitSourceBuffer::create(PassRef<SourceBufferPrivate> sourceBufferPrivate, PassRef<WebKitMediaSource> source) 44 44 { 45 return adoptRef( new WebKitSourceBuffer(sourceBufferPrivate, source));45 return adoptRef(*new WebKitSourceBuffer(std::move(sourceBufferPrivate), std::move(source))); 46 46 } 47 47 48 WebKitSourceBuffer::WebKitSourceBuffer(Pass OwnPtr<SourceBufferPrivate> sourceBufferPrivate, PassRefPtr<WebKitMediaSource> source)49 : m_private(s ourceBufferPrivate)50 , m_source(s ource)48 WebKitSourceBuffer::WebKitSourceBuffer(PassRef<SourceBufferPrivate> sourceBufferPrivate, PassRef<WebKitMediaSource> source) 49 : m_private(std::move(sourceBufferPrivate)) 50 , m_source(std::move(source)) 51 51 , m_timestampOffset(0) 52 52 { -
trunk/Source/WebCore/Modules/mediasource/WebKitSourceBuffer.h
r156049 r158270 48 48 class WebKitSourceBuffer : public RefCounted<WebKitSourceBuffer>, public ScriptWrappable { 49 49 public: 50 static PassRef Ptr<WebKitSourceBuffer> create(PassOwnPtr<SourceBufferPrivate>, PassRefPtr<WebKitMediaSource>);50 static PassRef<WebKitSourceBuffer> create(PassRef<SourceBufferPrivate>, PassRef<WebKitMediaSource>); 51 51 52 52 virtual ~WebKitSourceBuffer(); … … 62 62 63 63 private: 64 WebKitSourceBuffer(Pass OwnPtr<SourceBufferPrivate>, PassRefPtr<WebKitMediaSource>);64 WebKitSourceBuffer(PassRef<SourceBufferPrivate>, PassRef<WebKitMediaSource>); 65 65 66 66 bool isRemoved() const; 67 67 68 OwnPtr<SourceBufferPrivate> m_private;68 RefPtr<SourceBufferPrivate> m_private; 69 69 RefPtr<WebKitMediaSource> m_source; 70 70 -
trunk/Source/WebCore/html/HTMLMediaSource.h
r156049 r158270 54 54 // Reattachment allowed by first calling close() (even if already in 'closed'). 55 55 virtual bool attachToElement() = 0; 56 virtual void setPrivateAndOpen(Pass OwnPtr<MediaSourcePrivate>) = 0;56 virtual void setPrivateAndOpen(PassRef<MediaSourcePrivate>) = 0; 57 57 virtual void close() = 0; 58 58 virtual bool isClosed() const = 0; -
trunk/Source/WebCore/platform/graphics/MediaSourcePrivate.h
r156049 r158270 34 34 35 35 #include <wtf/Forward.h> 36 #include <wtf/RefCounted.h> 37 #include <wtf/Vector.h> 36 38 37 39 namespace WebCore { 38 40 41 class ContentType; 39 42 class SourceBufferPrivate; 40 43 41 class MediaSourcePrivate {44 class MediaSourcePrivate : public RefCounted<MediaSourcePrivate> { 42 45 public: 43 typedef Vector<String , 0> CodecsArray;46 typedef Vector<String> CodecsArray; 44 47 45 48 MediaSourcePrivate() { } … … 47 50 48 51 enum AddStatus { Ok, NotSupported, ReachedIdLimit }; 49 virtual AddStatus addSourceBuffer(const String& type, const CodecsArray&, OwnPtr<SourceBufferPrivate>*) = 0;52 virtual AddStatus addSourceBuffer(const ContentType&, RefPtr<SourceBufferPrivate>&) = 0; 50 53 virtual double duration() = 0; 51 54 virtual void setDuration(double) = 0; -
trunk/Source/WebCore/platform/graphics/SourceBufferPrivate.h
r144638 r158270 34 34 35 35 #include "TimeRanges.h" 36 #include <wtf/RefCounted.h> 36 37 37 38 namespace WebCore { 38 39 39 class SourceBufferPrivate {40 class SourceBufferPrivate : public RefCounted<SourceBufferPrivate> { 40 41 public: 41 SourceBufferPrivate() { }42 42 virtual ~SourceBufferPrivate() { } 43 43
Note: See TracChangeset
for help on using the changeset viewer.