Skip to content

Commit

Permalink
Merge pull request #12 from lifely/SnSSmartPlayer
Browse files Browse the repository at this point in the history
Merging last version of SnSsmartPlayer, last leak is still being fixed
  • Loading branch information
lifely committed Aug 6, 2012
2 parents 2532cfa + f92b6b0 commit 1389aa2
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -183,8 +183,8 @@ - (void)setPlayer:(AVPlayer *)player
{
if (player_)
{
[player_ removeObserver:self forKeyPath:kSPCurrentItemKey];
[player_ removeObserver:self forKeyPath:kSPRateKey];
[player_ removeObserver:self forKeyPath:kSPCurrentItemKey context:SPCurrentItemObservationContext];
[player_ removeObserver:self forKeyPath:kSPRateKey context:SPRateObservationContext];
}

[player_ release];
Expand Down Expand Up @@ -219,7 +219,7 @@ - (void)setCurrentItem:(AVPlayerItem *)currentItem
{
if (currentItem_)
{
[currentItem_ removeObserver:self forKeyPath:kSPStatusKey];
[currentItem_ removeObserver:self forKeyPath:kSPStatusKey context:SPStatusObservationContext];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:AVPlayerItemDidPlayToEndTimeNotification
object:currentItem_];
Expand Down Expand Up @@ -293,7 +293,7 @@ - (void)setSubtitles:(NSArray *)subtitles
self.subtitlesAnimation.beginTime = AVCoreAnimationBeginTimeAtZero;
self.subtitlesAnimation.calculationMode = kCAAnimationDiscrete;
self.subtitlesAnimation.duration = CMTimeGetSeconds(urlAsset_.duration);
self.subtitlesAnimation.keyPath = @"delegate.text";
self.subtitlesAnimation.keyPath = @"superlayer.delegate.text";

self.subtitlesAnimation.values = subtitlesTexts_;
self.subtitlesAnimation.keyTimes = subtitlesTimes_;
Expand Down Expand Up @@ -417,12 +417,12 @@ - (void)helperLayerSubArea:(UILabel*)subArea
subArea.layer.sublayers = nil;

CATextLayer *textLayer = [CATextLayer layer];
textLayer.delegate = subArea;
// textLayer.delegate = subArea; // Crash on removeFromView
textLayer.string = nil;
textLayer.hidden = YES;
textLayer.frame = (CGRect){0, 0, subArea.frame.size};

[textLayer addAnimation:[[self.subtitlesAnimation copy] autorelease] forKey:@"delegate.text"];
[textLayer addAnimation:[[self.subtitlesAnimation copy] autorelease] forKey:@"superlayer.delegate.text"];

CAKeyframeAnimation *monkeyFix = [[self.subtitlesAnimation copy] autorelease];
monkeyFix.keyPath = @"string";
Expand Down Expand Up @@ -498,7 +498,6 @@ - (void)prepareToPlay
NSArray *requestedKeys = [NSArray arrayWithObjects:kSPTracksKey, kSPPlayableKey, nil];
[urlAsset_ loadValuesAsynchronouslyForKeys:requestedKeys completionHandler:^
{
dispatch_async(dispatch_get_main_queue(), ^{
for (NSString *key in requestedKeys)
{
NSError *error = nil;
Expand Down Expand Up @@ -532,7 +531,6 @@ - (void)prepareToPlay

// [self syncPlayPauseButtons]; // TODO synButtons on Main Thread
}
});
}];

[self syncScrubber];
Expand Down Expand Up @@ -866,6 +864,21 @@ - (void)playerViewsEnabled:(BOOL)enabled
# pragma mark Basics
# pragma mark -

- (void)viewWillDisappear:(BOOL)animated
{
[player_ removeObserver:self forKeyPath:kSPCurrentItemKey context:SPCurrentItemObservationContext];
[player_ removeObserver:self forKeyPath:kSPRateKey context:SPRateObservationContext];

[currentItem_ removeObserver:self forKeyPath:kSPStatusKey context:SPStatusObservationContext];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:AVPlayerItemDidPlayToEndTimeNotification
object:currentItem_];


[((SnSSmartPlayerView*)self.playerViews.lastObject).layer removeObserver:self forKeyPath:@"readyForDisplay" context:SPLayerReadyForDisplay];
((SnSSmartPlayerView*)self.playerViews.lastObject).player = nil;
}

- (id)retain
{
SnSLogD(@"Player retained");
Expand Down Expand Up @@ -904,7 +917,7 @@ - (void)dealloc
self.volumeSliders = nil;
self.scrubberSliders = nil;

[((SnSSmartPlayerView*)self.playerViews.lastObject).layer removeObserver:self forKeyPath:@"readyForDisplay"];
[((SnSSmartPlayerView*)self.playerViews.lastObject).layer removeObserver:self forKeyPath:@"readyForDisplay" context:SPLayerReadyForDisplay];
((SnSSmartPlayerView*)self.playerViews.lastObject).player = nil;

self.subAreas = nil;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ - (void)setVideoFillMode:(NSString *)fillMode

- (void)dealloc
{
[super dealloc];

self.player = nil;

[super dealloc];
}

@end
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ - (void)setPlayerItem:(AVPlayerItem *)playerItem
# pragma mark -

- (void)dealloc
{
[super dealloc];

{
self.playerItem = nil;

[super dealloc];
}

@end
2 changes: 1 addition & 1 deletion SnSFramework/SnSFramework/ios4me/iOSFramework.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,4 +83,4 @@ echo ""

# You can comment the next line it's just a visual confirmation the project was succesfully built
# and will open the Finder at the build path
open "$FRAMEWORK_BUILD_PATH"
# open "$FRAMEWORK_BUILD_PATH"

0 comments on commit 1389aa2

Please sign in to comment.