diff --git a/Classes/LinphoneUI/UILinphoneAudioPlayer.h b/Classes/LinphoneUI/UILinphoneAudioPlayer.h index ef9e5ce5a..8417ff7fa 100644 --- a/Classes/LinphoneUI/UILinphoneAudioPlayer.h +++ b/Classes/LinphoneUI/UILinphoneAudioPlayer.h @@ -17,6 +17,7 @@ + (id)audioPlayerWithFilePath:(NSString *)filePath; - (void)close; - (BOOL)isOpened; +- (BOOL)isCreated; - (void)open; - (void)pause; - (void)setFile:(NSString *)fileName; diff --git a/Classes/LinphoneUI/UILinphoneAudioPlayer.m b/Classes/LinphoneUI/UILinphoneAudioPlayer.m index 4f157c833..4aca2fc9d 100644 --- a/Classes/LinphoneUI/UILinphoneAudioPlayer.m +++ b/Classes/LinphoneUI/UILinphoneAudioPlayer.m @@ -44,6 +44,7 @@ - (void)close { if (player) { + linphone_player_close(player); linphone_player_unref(player); player = NULL; } @@ -60,6 +61,10 @@ [_stopButton setImage:[UIImage imageFromSystemBarButton:UIBarButtonSystemItemRefresh:[UIColor blackColor]] forState:UIControlStateNormal]; } +- (void)viewWillDisappear:(BOOL)animated { + [self close]; +} + - (void)open { linphone_player_open(player, file.UTF8String); duration = linphone_player_get_duration(player); @@ -76,8 +81,12 @@ return player && linphone_player_get_state(player) != LinphonePlayerClosed; } +- (BOOL)isCreated { + return player; +} + - (void)setFile:(NSString *)fileName { - linphone_player_close(player); + if (player) linphone_player_close(player); file = fileName; } diff --git a/Classes/LinphoneUI/UIRecordingCell.m b/Classes/LinphoneUI/UIRecordingCell.m index 7c0af3e97..113afb5c9 100644 --- a/Classes/LinphoneUI/UIRecordingCell.m +++ b/Classes/LinphoneUI/UIRecordingCell.m @@ -96,12 +96,12 @@ static UILinphoneAudioPlayer *player; if (!selected) { return; } - if (!player) - player = [UILinphoneAudioPlayer audioPlayerWithFilePath:[self recording]]; - else - [player setFile:[self recording]]; - if ([player isOpened]) - [player close]; + if (player && [player isCreated]) { + [player close]; + } + + player = [UILinphoneAudioPlayer audioPlayerWithFilePath:[self recording]]; + [player.view removeFromSuperview]; [self addSubview:player.view]; [self bringSubviewToFront:player.view];