Skip to content

Commit

Permalink
Attempt to fix interruptionListener crash
Browse files Browse the repository at this point in the history
  • Loading branch information
chrisballinger committed May 16, 2013
1 parent 14ce3a9 commit eb92e78
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 1 deletion.
8 changes: 8 additions & 0 deletions TheAmazingAudioEngine.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
4C99588E16C0825F0011FB01 /* AEAudioUnitFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C99588C16C0825F0011FB01 /* AEAudioUnitFilter.m */; };
4CEC0EB916B5294300D11ED9 /* AEBlockFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CEC0EB716B5294200D11ED9 /* AEBlockFilter.h */; settings = {ATTRIBUTES = (Public, ); }; };
4CEC0EBA16B5294300D11ED9 /* AEBlockFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEC0EB816B5294300D11ED9 /* AEBlockFilter.m */; };
D90EBE5F1745611100DCD5C1 /* AESharedAudioController.h in Headers */ = {isa = PBXBuildFile; fileRef = D90EBE5D1745611100DCD5C1 /* AESharedAudioController.h */; };
D90EBE601745611100DCD5C1 /* AESharedAudioController.m in Sources */ = {isa = PBXBuildFile; fileRef = D90EBE5E1745611100DCD5C1 /* AESharedAudioController.m */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
Expand Down Expand Up @@ -95,6 +97,8 @@
4CE501971493F82600F23607 /* TheAmazingAudioEngine-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TheAmazingAudioEngine-Prefix.pch"; sourceTree = "<group>"; };
4CEC0EB716B5294200D11ED9 /* AEBlockFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AEBlockFilter.h; sourceTree = "<group>"; };
4CEC0EB816B5294300D11ED9 /* AEBlockFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AEBlockFilter.m; sourceTree = "<group>"; };
D90EBE5D1745611100DCD5C1 /* AESharedAudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AESharedAudioController.h; sourceTree = "<group>"; };
D90EBE5E1745611100DCD5C1 /* AESharedAudioController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AESharedAudioController.m; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -176,6 +180,8 @@
4CE501911493F82600F23607 /* TheAmazingAudioEngine */ = {
isa = PBXGroup;
children = (
D90EBE5D1745611100DCD5C1 /* AESharedAudioController.h */,
D90EBE5E1745611100DCD5C1 /* AESharedAudioController.m */,
4CAD569315162822003CE861 /* TheAmazingAudioEngine.h */,
4CAD56801516281D003CE861 /* AEAudioController.h */,
4CAD56811516281D003CE861 /* AEAudioController.m */,
Expand Down Expand Up @@ -232,6 +238,7 @@
4C456B8D16D59365008ED99D /* AEBlockAudioReceiver.h in Headers */,
4C4B11F416833FDD00A3BA2E /* AEBlockChannel.h in Headers */,
4C09450116FBD7460054608E /* AEBlockScheduler.h in Headers */,
D90EBE5F1745611100DCD5C1 /* AESharedAudioController.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -334,6 +341,7 @@
4C99588E16C0825F0011FB01 /* AEAudioUnitFilter.m in Sources */,
4C456B8E16D59365008ED99D /* AEBlockAudioReceiver.m in Sources */,
4C09450216FBD7460054608E /* AEBlockScheduler.m in Sources */,
D90EBE601745611100DCD5C1 /* AESharedAudioController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
7 changes: 6 additions & 1 deletion TheAmazingAudioEngine/AEAudioController.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#import "AEFloatConverter.h"
#import <mach/mach_time.h>
#import <pthread.h>
#import "AESharedAudioController.h"

static double __hostTicksToSeconds = 0.0;
static double __secondsToHostTicks = 0.0;
Expand Down Expand Up @@ -301,7 +302,11 @@ @implementation AEAudioController
#pragma mark - Audio session callbacks

static void interruptionListener(void *inClientData, UInt32 inInterruption) {
AEAudioController *THIS = (AEAudioController *)inClientData;
AEAudioController *THIS = [AESharedAudioController sharedController].audioController;
if (!THIS) {
NSLog(@"TAAE: No audioController set on AESharedAudioController! Aborting interruptionListener.");
return;
}

if (inInterruption == kAudioSessionEndInterruption) {
NSLog(@"TAAE: Audio session interruption ended");
Expand Down
18 changes: 18 additions & 0 deletions TheAmazingAudioEngine/AESharedAudioController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
//
// AESharedAudioController.h
// TheAmazingAudioEngine
//
// Created by Christopher Ballinger on 5/16/13.
// Copyright (c) 2013 A Tasty Pixel. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AEAudioController.h"

@interface AESharedAudioController : NSObject

@property (nonatomic, strong) AEAudioController *audioController;

+ (AESharedAudioController*) sharedController;

@end
23 changes: 23 additions & 0 deletions TheAmazingAudioEngine/AESharedAudioController.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//
// AESharedAudioController.m
// TheAmazingAudioEngine
//
// Created by Christopher Ballinger on 5/16/13.
// Copyright (c) 2013 A Tasty Pixel. All rights reserved.
//

#import "AESharedAudioController.h"

@implementation AESharedAudioController
@synthesize audioController;

+ (AESharedAudioController*) sharedController {
static AESharedAudioController *_sharedController = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedController = [[AESharedAudioController alloc] init];
});
return _sharedController;
}

@end

0 comments on commit eb92e78

Please sign in to comment.