Index: third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
index 9c8f7c946766e9d46e2600508d2644020323fc63..4b1fe41c63082edce7c7057775782fa25dc4f201 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/MediaStreamTrack.cpp |
@@ -60,6 +60,7 @@ |
MediaStreamTrack::~MediaStreamTrack() |
{ |
+ m_component->source()->removeObserver(this); |
} |
String MediaStreamTrack::kind() const |
@@ -162,9 +163,9 @@ |
MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context) |
{ |
- MediaStreamComponent* clonedComponent = MediaStreamComponent::create(component()->source()); |
- MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComponent); |
- MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent); |
+ RefPtr<MediaStreamComponent> clonedComponent = MediaStreamComponent::create(component()->source()); |
+ MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComponent.get()); |
+ MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent.get()); |
return clonedTrack; |
} |
@@ -204,6 +205,11 @@ |
m_isIteratingRegisteredMediaStreams = false; |
} |
+MediaStreamComponent* MediaStreamTrack::component() |
+{ |
+ return m_component.get(); |
+} |
+ |
void MediaStreamTrack::stop() |
{ |
m_stopped = true; |
@@ -242,7 +248,6 @@ |
DEFINE_TRACE(MediaStreamTrack) |
{ |
visitor->trace(m_registeredMediaStreams); |
- visitor->trace(m_component); |
RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace(visitor); |
ActiveDOMObject::trace(visitor); |
} |