@@ -67,10 +67,10 @@ -(NSString *) getDirectory:(int)directory {
6767
6868-(void ) audioPlayerDidFinishPlaying : (AVAudioPlayer*)player
6969 successfully : (BOOL )flag {
70- NSNumber * key = [self keyForPlayer: player];
71- if (key == nil ) return ;
70+ @synchronized (self) {
71+ NSNumber * key = [self keyForPlayer: player];
72+ if (key == nil ) return ;
7273
73- @synchronized (key) {
7474 [self setOnPlay: NO forPlayerKey: key];
7575 RCTResponseSenderBlock callback = [self callbackForKey: key];
7676 if (callback) {
@@ -199,12 +199,14 @@ -(NSDictionary *)constantsToExport {
199199 }
200200
201201 if (player) {
202- player.delegate = self;
203- player.enableRate = YES ;
204- [player prepareToPlay ];
205- [[self playerPool ] setObject: player forKey: key];
206- callback (@[[NSNull null ], @{@" duration" : @(player.duration ),
207- @" numberOfChannels" : @(player.numberOfChannels )}]);
202+ @synchronized (self) {
203+ player.delegate = self;
204+ player.enableRate = YES ;
205+ [player prepareToPlay ];
206+ [[self playerPool ] setObject: player forKey: key];
207+ callback (@[[NSNull null ], @{@" duration" : @(player.duration ),
208+ @" numberOfChannels" : @(player.numberOfChannels )}]);
209+ }
208210 } else {
209211 callback (@[RCTJSErrorFromNSError (error)]);
210212 }
@@ -240,13 +242,15 @@ -(NSDictionary *)constantsToExport {
240242}
241243
242244RCT_EXPORT_METHOD (release:(nonnull NSNumber *)key) {
243- AVAudioPlayer* player = [self playerForKey: key];
244- if (player) {
245- [player stop ];
246- [[self callbackPool ] removeObjectForKey: player];
247- [[self playerPool ] removeObjectForKey: key];
248- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter ];
249- [notificationCenter removeObserver: self ];
245+ @synchronized (self) {
246+ AVAudioPlayer* player = [self playerForKey: key];
247+ if (player) {
248+ [player stop ];
249+ [[self callbackPool ] removeObjectForKey: key];
250+ [[self playerPool ] removeObjectForKey: key];
251+ NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter ];
252+ [notificationCenter removeObserver: self ];
253+ }
250254 }
251255}
252256
0 commit comments