Fixed crash when PCF is destroyed before MediaStream in ObjC

Bug: webrtc:9231
Change-Id: I04e76172dd0d5ee5e9040e773e63fd4df0c797ce
Reviewed-on: https://webrtc-review.googlesource.com/84580
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23699}
This commit is contained in:
Yura Yaroshevich
2018-06-21 12:51:11 +03:00
committed by Commit Bot
parent 8b23dba0e5
commit c806c1d337
5 changed files with 45 additions and 17 deletions

View File

@ -19,6 +19,7 @@
#import "RTCVideoTrack+Private.h"
@implementation RTCMediaStream {
RTCPeerConnectionFactory *_factory;
NSMutableArray *_audioTracks;
NSMutableArray *_videoTracks;
rtc::scoped_refptr<webrtc::MediaStreamInterface> _nativeMediaStream;
@ -31,7 +32,7 @@
std::string nativeId = [NSString stdStringForString:streamId];
rtc::scoped_refptr<webrtc::MediaStreamInterface> stream =
factory.nativeFactory->CreateLocalMediaStream(nativeId);
return [self initWithNativeMediaStream:stream];
return [self initWithFactory:factory nativeMediaStream:stream];
}
- (NSArray<RTCAudioTrack *> *)audioTracks {
@ -91,10 +92,13 @@
return _nativeMediaStream;
}
- (instancetype)initWithNativeMediaStream:
(rtc::scoped_refptr<webrtc::MediaStreamInterface>)nativeMediaStream {
- (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory
nativeMediaStream:
(rtc::scoped_refptr<webrtc::MediaStreamInterface>)nativeMediaStream {
NSParameterAssert(nativeMediaStream);
if (self = [super init]) {
_factory = factory;
webrtc::AudioTrackVector audioTracks = nativeMediaStream->GetAudioTracks();
webrtc::VideoTrackVector videoTracks = nativeMediaStream->GetVideoTracks();