diff --git a/Application/PlaybackController.m b/Application/PlaybackController.m index 7dd851000..3a4e07efc 100644 --- a/Application/PlaybackController.m +++ b/Application/PlaybackController.m @@ -576,7 +576,7 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe) [[NSUserDefaults standardUserDefaults] setDouble:[audioPlayer volume] forKey:@"volume"]; } -- (void)showStubEq +- (void)eqAlloc { // Show a stopped equalizer as a stub OSStatus err; @@ -602,15 +602,13 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe) return; AudioUnitInitialize(_eq); - - _eqStubbed = YES; } -- (void)hideStubEq +- (void)eqDealloc { AudioUnitUninitialize(_eq); AudioComponentInstanceDispose(_eq); - _eq = NULL; + _eq = nil; _eqStubbed = NO; } @@ -625,7 +623,7 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe) } else { - [self showStubEq]; + [self eqAlloc]; _eqWasOpen = YES; [self audioPlayer:nil displayEqualizer:_eq]; [_equi bringToFront]; @@ -655,10 +653,8 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe) CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication); - if (_eqStubbed) - { - [self hideStubEq]; - } + // Caller relinquishes EQ to us + [self eqDealloc]; } _eq = eq; @@ -728,9 +724,9 @@ NSDictionary * makeRGInfo(PlaylistEntry *pe) { _eqWasOpen = [_equi isOpen]; } - + _equi = nil; - _eq = nil; + [self eqDealloc]; if (_eqWasOpen) { diff --git a/Audio/Output/OutputCoreAudio.m b/Audio/Output/OutputCoreAudio.m index 8544773b6..4625f1847 100644 --- a/Audio/Output/OutputCoreAudio.m +++ b/Audio/Output/OutputCoreAudio.m @@ -767,9 +767,8 @@ default_device_changed(AudioObjectID inObjectID, UInt32 inNumberAddresses, const } if (_eq) { + // This takes the EQ and frees it after disposing of any present UIs [outputController endEqualizer:_eq]; - AudioUnitUninitialize(_eq); - AudioComponentInstanceDispose(_eq); _eq = NULL; } #ifdef OUTPUT_LOG