[vlc-commits] macosx: update audio devices menu on-the-fly

David Fuhrmann git at videolan.org
Fri Apr 5 21:01:01 CEST 2013


vlc | branch: master | David Fuhrmann <david.fuhrmann at googlemail.com> | Fri Apr  5 20:54:54 2013 +0200| [295f55c5c511480acc1547b524d6f4a541521155] | committer: David Fuhrmann

macosx: update audio devices menu on-the-fly

Fixes missing updates and state of menu check box

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=295f55c5c511480acc1547b524d6f4a541521155
---

 modules/gui/macosx/MainMenu.m |   27 +--------------------------
 1 file changed, 1 insertion(+), 26 deletions(-)

diff --git a/modules/gui/macosx/MainMenu.m b/modules/gui/macosx/MainMenu.m
index 0cc28b4..3bfa6e8 100644
--- a/modules/gui/macosx/MainMenu.m
+++ b/modules/gui/macosx/MainMenu.m
@@ -24,7 +24,6 @@
 #import "MainMenu.h"
 #import <vlc_common.h>
 #import <vlc_playlist.h>
-#import <CoreAudio/CoreAudio.h>
 
 #import "intf.h"
 #import "open.h"
@@ -46,19 +45,6 @@
 #import "ExtensionsManager.h"
 #import "ConvertAndSave.h"
 
-static OSStatus HardwareListener        (AudioObjectID, UInt32, const AudioObjectPropertyAddress *, void *);
-
-static OSStatus HardwareListener(AudioObjectID inObjectID,  UInt32 inNumberAddresses, const AudioObjectPropertyAddress inAddresses[], void*inClientData)
-{
-    VLC_UNUSED(inObjectID);
-    VLC_UNUSED(inNumberAddresses);
-    VLC_UNUSED(inAddresses);
-    // give the core some time update its internal structure for the new device setup
-    [[VLCMainMenu sharedInstance] performSelector:@selector(refreshAudioDeviceList) withObject:nil afterDelay:.5];
-
-    return noErr;
-}
-
 @implementation VLCMainMenu
 static VLCMainMenu *_o_sharedInstance = nil;
 
@@ -100,11 +86,6 @@ static VLCMainMenu *_o_sharedInstance = nil;
 
 - (void)dealloc
 {
-    AudioObjectPropertyAddress audioDevicesAddress = { kAudioHardwarePropertyDevices, kAudioObjectPropertyScopeGlobal, kAudioObjectPropertyElementMaster };
-    OSStatus err = AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &audioDevicesAddress, HardwareListener, nil);
-    if (err != noErr)
-        msg_Err(p_intf, "failed to add audio hardware listener (%i)", err);
-
     [[NSNotificationCenter defaultCenter] removeObserver: self];
 
     if (b_nib_about_loaded)
@@ -282,13 +263,6 @@ static VLCMainMenu *_o_sharedInstance = nil;
     [self setupExtensionsMenu];
 
     [self refreshAudioDeviceList];
-
-    AudioObjectPropertyAddress audioDevicesAddress = { kAudioHardwarePropertyDevices,
-                                                       kAudioObjectPropertyScopeGlobal,
-                                                       kAudioObjectPropertyElementMaster };
-    OSStatus err = AudioObjectAddPropertyListener(kAudioObjectSystemObject, &audioDevicesAddress, HardwareListener, nil);
-    if (err != noErr)
-        msg_Err(p_intf, "failed to add audio hardware listener (%i)", err);
 }
 
 - (void)initStrings
@@ -1365,6 +1339,7 @@ static VLCMainMenu *_o_sharedInstance = nil;
     } else if ([o_title isEqualToString: _NS("Mute")]) {
         [o_mi setState: [[VLCCoreInteraction sharedInstance] mute] ? NSOnState : NSOffState];
         [self setupMenus]; /* Make sure audio menu is up to date */
+        [self refreshAudioDeviceList];
     } else if ([o_title isEqualToString: _NS("Half Size")] ||
                [o_title isEqualToString: _NS("Normal Size")] ||
                [o_title isEqualToString: _NS("Double Size")] ||



More information about the vlc-commits mailing list