diff options
Diffstat (limited to 'src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm')
-rw-r--r-- | src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm b/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm index c4c661464..95d6b922f 100644 --- a/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm +++ b/src/multimedia/platform/darwin/mediaplayer/avfmediaplayer.mm @@ -127,6 +127,9 @@ static void *AVFMediaPlayerObserverCurrentItemDurationObservationContext = &AVFM - (void) setURL:(NSURL *)url mimeType:(NSString *)mimeType { + if (!m_session) + return; + [m_mimeType release]; m_mimeType = [mimeType retain]; @@ -145,18 +148,17 @@ static void *AVFMediaPlayerObserverCurrentItemDurationObservationContext = &AVFM __block NSArray *requestedKeys = [[NSArray arrayWithObjects:AVF_TRACKS_KEY, AVF_PLAYABLE_KEY, nil] retain]; - __block AVFMediaPlayerObserver *blockSelf = self; - QPointer<AVFMediaPlayer> session(m_session); + __block AVFMediaPlayerObserver *blockSelf = [self retain]; // Tells the asset to load the values of any of the specified keys that are not already loaded. [asset loadValuesAsynchronouslyForKeys:requestedKeys completionHandler: ^{ dispatch_async( dispatch_get_main_queue(), ^{ - if (session) - [blockSelf prepareToPlayAsset:asset withKeys:requestedKeys]; + [blockSelf prepareToPlayAsset:asset withKeys:requestedKeys]; [asset release]; [requestedKeys release]; + [blockSelf release]; }); }]; } @@ -193,6 +195,9 @@ static void *AVFMediaPlayerObserverCurrentItemDurationObservationContext = &AVFM - (void) prepareToPlayAsset:(AVURLAsset *)asset withKeys:(NSArray *)requestedKeys { + if (!m_session) + return; + //Make sure that the value of each key has loaded successfully. for (NSString *thisKey in requestedKeys) { |