Changeset 171069 in webkit
- Timestamp:
- Jul 14, 2014 11:17:34 AM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 deleted
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r171059 r171069 1 2014-07-14 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] don't enable low power audio mode on external output devices 4 https://bugs.webkit.org/show_bug.cgi?id=134877 5 6 Reviewed by Sam Weinig. 7 8 No new tests, this deals with changes to the audio hardware at runtime. 9 10 * WebCore.xcodeproj/project.pbxproj: Remove AudioSessionListener.h. 11 * WebCore.vcxproj/WebCore.vcxproj: Ditto. 12 13 * platform/audio/AudioHardwareListener.cpp: 14 (WebCore::AudioHardwareListener::AudioHardwareListener): Initialize m_outputDeviceSupportsLowPowerMode 15 to true on iOS. 16 * platform/audio/AudioHardwareListener.h: 17 (WebCore::AudioHardwareListener::outputDeviceSupportsLowPowerMode): New accessor. 18 (WebCore::AudioHardwareListener::setHardwareActivity): New setter for derived classes. 19 (WebCore::AudioHardwareListener::setOutputDeviceSupportsLowPowerMode): Ditto. 20 21 Remove AudioSessionListener interface, it wasn't being used. 22 * platform/audio/AudioSession.cpp: 23 (WebCore::AudioSession::addListener): Deleted. 24 (WebCore::AudioSession::removeListener): Deleted. 25 (WebCore::AudioSession::beganAudioInterruption): Deleted. 26 (WebCore::AudioSession::endedAudioInterruption): Deleted. 27 * platform/audio/AudioSession.h: 28 * platform/audio/AudioSessionListener.h: Removed. 29 30 * platform/audio/MediaSessionManager.cpp: 31 (WebCore::MediaSessionManager::addSession): Allocate the AudioHardwareListener if necessary. 32 (WebCore::MediaSessionManager::removeSession): Free the AudioHardwareListener if necessary. 33 (WebCore::MediaSessionManager::audioOutputDeviceChanged): AudioHardwareListener client interface 34 called when the output device changes, call updateSessionState to make sure we are using 35 the correct buffer size. 36 * platform/audio/MediaSessionManager.h: 37 38 * platform/audio/ios/AudioDestinationIOS.h: 39 * platform/audio/ios/AudioSessionIOS.mm: 40 (WebCore::AudioSessionPrivate::AudioSessionPrivate): Drive-by cleanup, remove ObjC helper object 41 that was used to listen for OS notifications, it is no longer used. 42 (SOFT_LINK_POINTER): Deleted. 43 (-[WebAudioSessionHelper initWithCallback:]): Deleted. 44 (-[WebAudioSessionHelper dealloc]): Deleted. 45 (-[WebAudioSessionHelper interruption:]): Deleted. 46 47 * platform/audio/mac/AudioHardwareListenerMac.cpp: 48 (WebCore::currentDeviceSupportsLowPowerBufferSize): New, return true only if using build-in 49 transport device. 50 (WebCore::processIsRunningPropertyDescriptor): Return reference to static AudioObjectPropertyAddress 51 for kAudioHardwarePropertyProcessIsRunning instead of declaring one in every method 52 that needs one. 53 (WebCore::outputDevicePropertyDescriptor): Return reference to static AudioObjectPropertyAddress 54 for kAudioHardwarePropertyDefaultOutputDevice. 55 (WebCore::AudioHardwareListenerMac::AudioHardwareListenerMac): Restructure and add audio object 56 listener for default output device. 57 (WebCore::AudioHardwareListenerMac::~AudioHardwareListenerMac): *Remove* listener audio object 58 property listener instead of *Adding* a new one. Remove new listener. 59 (WebCore::AudioHardwareListenerMac::propertyChanged): Enumerate the properties that changed, 60 call appropriate method. 61 (WebCore::AudioHardwareListenerMac::processIsRunningChanged): Renamed from setHardwareActive, 62 cleanup. 63 (WebCore::AudioHardwareListenerMac::outputDeviceChanged): New, call client.audioHardwareOutputDeviceChanged. 64 (WebCore::AudioHardwareListenerMac::setHardwareActive): Deleted, renamed processIsRunningChanged. 65 * platform/audio/mac/AudioHardwareListenerMac.h: 66 67 * platform/audio/mac/MediaSessionManagerMac.cpp: 68 (MediaSessionManager::updateSessionState): Only set the output buffer size to 4K when hardware 69 supports it. 70 1 71 2014-07-13 Benjamin Poulain <benjamin@webkit.org> 2 72 -
trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj
r170698 r171069 19310 19310 <ClInclude Include="..\platform\FloatConversion.h" /> 19311 19311 <ClInclude Include="..\platform\audio\AudioSession.h" /> 19312 <ClInclude Include="..\platform\audio\AudioSessionListener.h" />19313 19312 <ClInclude Include="..\platform\audio\MediaSession.h" /> 19314 19313 <ClInclude Include="..\platform\audio\MediaSessionManager.h" /> -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r170730 r171069 13115 13115 CDA07FC018E0A22B004699FA /* SystemSleepListenerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemSleepListenerMac.h; sourceTree = "<group>"; }; 13116 13116 CDA79821170A22DC00D45C55 /* AudioSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioSession.h; sourceTree = "<group>"; }; 13117 CDA79822170A24F400D45C55 /* AudioSessionListener.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioSessionListener.h; sourceTree = "<group>"; };13118 13117 CDA79823170A258300D45C55 /* AudioSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioSession.cpp; sourceTree = "<group>"; }; 13119 13118 CDA79825170A279000D45C55 /* AudioSessionIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AudioSessionIOS.mm; path = ios/AudioSessionIOS.mm; sourceTree = "<group>"; }; … … 23084 23083 CDA79823170A258300D45C55 /* AudioSession.cpp */, 23085 23084 CDA79821170A22DC00D45C55 /* AudioSession.h */, 23086 CDA79822170A24F400D45C55 /* AudioSessionListener.h */,23087 23085 FD31605312B026F700C1A359 /* AudioSourceProvider.h */, 23088 23086 FD62F52D145898D80094B0ED /* AudioSourceProviderClient.h */, -
trunk/Source/WebCore/platform/audio/AudioHardwareListener.cpp
r166446 r171069 39 39 : m_client(client) 40 40 , m_activity(AudioHardwareActivityType::Unknown) 41 , m_outputDeviceSupportsLowPowerMode(false) 41 42 { 42 43 #if PLATFORM(IOS) 44 m_outputDeviceSupportsLowPowerMode = true; 45 #endif 43 46 } 44 47 -
trunk/Source/WebCore/platform/audio/AudioHardwareListener.h
r166446 r171069 45 45 virtual void audioHardwareDidBecomeActive() = 0; 46 46 virtual void audioHardwareDidBecomeInactive() = 0; 47 virtual void audioOutputDeviceChanged() = 0; 47 48 }; 48 49 … … 51 52 52 53 AudioHardwareActivityType hardwareActivity() const { return m_activity; } 54 bool outputDeviceSupportsLowPowerMode() const { return m_outputDeviceSupportsLowPowerMode; } 53 55 54 56 protected: 55 57 AudioHardwareListener(Client&); 56 58 59 void setHardwareActivity(AudioHardwareActivityType activity) { m_activity = activity; } 60 void setOutputDeviceSupportsLowPowerMode(bool support) { m_outputDeviceSupportsLowPowerMode = support; } 61 57 62 Client& m_client; 58 63 AudioHardwareActivityType m_activity; 64 bool m_outputDeviceSupportsLowPowerMode; 59 65 }; 60 66 -
trunk/Source/WebCore/platform/audio/AudioSession.cpp
r165607 r171069 1 1 /* 2 * Copyright (C) 2013 Apple Inc. All rights reserved.2 * Copyright (C) 2013-2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 29 29 #if USE(AUDIO_SESSION) 30 30 31 #include "AudioSessionListener.h"32 31 #include "NotImplemented.h" 33 32 … … 38 37 DEPRECATED_DEFINE_STATIC_LOCAL(AudioSession, session, ()); 39 38 return session; 40 }41 42 void AudioSession::addListener(AudioSessionListener* listener)43 {44 m_listeners.add(listener);45 }46 47 void AudioSession::removeListener(AudioSessionListener* listener)48 {49 m_listeners.remove(listener);50 }51 52 void AudioSession::beganAudioInterruption()53 {54 for (HashSet<AudioSessionListener*>::iterator i = m_listeners.begin(); i != m_listeners.end(); ++i)55 (*i)->beganAudioInterruption();56 }57 58 void AudioSession::endedAudioInterruption()59 {60 for (HashSet<AudioSessionListener*>::iterator i = m_listeners.begin(); i != m_listeners.end(); ++i)61 (*i)->endedAudioInterruption();62 39 } 63 40 -
trunk/Source/WebCore/platform/audio/AudioSession.h
r162774 r171069 1 1 /* 2 * Copyright (C) 2013 Apple Inc. All rights reserved.2 * Copyright (C) 2013-2014 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 35 35 namespace WebCore { 36 36 37 class AudioSessionListener;38 37 class AudioSessionPrivate; 39 38 … … 58 57 CategoryType categoryOverride() const; 59 58 60 void addListener(AudioSessionListener*);61 void removeListener(AudioSessionListener*);62 63 59 float sampleRate() const; 64 60 size_t numberOfOutputChannels() const; … … 69 65 void setPreferredBufferSize(size_t); 70 66 71 void beganAudioInterruption();72 void endedAudioInterruption();73 74 67 private: 75 68 AudioSession(); … … 77 70 78 71 std::unique_ptr<AudioSessionPrivate> m_private; 79 HashSet<AudioSessionListener*> m_listeners;80 72 }; 81 73 -
trunk/Source/WebCore/platform/audio/MediaSessionManager.cpp
r170370 r171069 120 120 if (m_interrupted) 121 121 session.setState(MediaSession::Interrupted); 122 updateSessionState();123 122 124 123 if (!m_remoteCommandListener) 125 124 m_remoteCommandListener = RemoteCommandListener::create(*this); 125 126 if (!m_audioHardwareListener) 127 m_audioHardwareListener = AudioHardwareListener::create(*this); 128 129 updateSessionState(); 126 130 127 131 if (m_clients.isEmpty() || !(session.mediaType() == MediaSession::Video || session.mediaType() == MediaSession::Audio)) … … 142 146 143 147 m_sessions.remove(index); 144 updateSessionState(); 145 146 if (m_sessions.isEmpty()) 148 149 if (m_sessions.isEmpty()) { 147 150 m_remoteCommandListener = nullptr; 151 m_audioHardwareListener = nullptr; 152 } 153 154 updateSessionState(); 148 155 149 156 if (m_clients.isEmpty() || !(session.mediaType() == MediaSession::Video || session.mediaType() == MediaSession::Audio)) … … 340 347 } 341 348 349 void MediaSessionManager::audioOutputDeviceChanged() 350 { 351 updateSessionState(); 352 } 353 342 354 } 343 355 -
trunk/Source/WebCore/platform/audio/MediaSessionManager.h
r170370 r171069 27 27 #define MediaSessionManager_h 28 28 29 #include <AudioHardwareListener.h> 29 30 #include "MediaSession.h" 30 31 #include "RemoteCommandListener.h" … … 53 54 }; 54 55 55 class MediaSessionManager : RemoteCommandListenerClient, SystemSleepListener::Client {56 class MediaSessionManager : private RemoteCommandListenerClient, private SystemSleepListener::Client, private AudioHardwareListener::Client { 56 57 public: 57 58 static MediaSessionManager& sharedManager(); … … 95 96 #endif 96 97 97 virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) override;98 99 98 void addClient(MediaSessionManagerClient*); 100 99 void removeClient(MediaSessionManagerClient*); … … 115 114 void updateSessionState(); 116 115 117 virtual void systemWillSleep(); 118 virtual void systemDidWake(); 116 117 // RemoteCommandListenerClient 118 virtual void didReceiveRemoteControlCommand(MediaSession::RemoteControlCommandType) override; 119 120 // AudioHardwareListenerClient 121 virtual void audioHardwareDidBecomeActive() override { } 122 virtual void audioHardwareDidBecomeInactive() override { } 123 virtual void audioOutputDeviceChanged() override; 124 125 // SystemSleepListener 126 virtual void systemWillSleep() override; 127 virtual void systemDidWake() override; 119 128 120 129 SessionRestrictions m_restrictions[MediaSession::WebAudio + 1]; … … 124 133 std::unique_ptr<RemoteCommandListener> m_remoteCommandListener; 125 134 std::unique_ptr<SystemSleepListener> m_systemSleepListener; 135 RefPtr<AudioHardwareListener> m_audioHardwareListener; 126 136 bool m_interrupted; 127 137 }; -
trunk/Source/WebCore/platform/audio/ios/AudioDestinationIOS.h
r168075 r171069 33 33 #include "AudioBus.h" 34 34 #include "AudioDestination.h" 35 #include "AudioSessionListener.h"36 35 #include "MediaSession.h" 37 36 #include <AudioUnit/AudioUnit.h> -
trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm
r167767 r171069 55 55 #define AVAudioSessionInterruptionTypeKey getAVAudioSessionInterruptionTypeKey() 56 56 57 static NSString * const WCAVAudioSessionInterruptionNotification = @"AVAudioSessionInterruptionNotification";58 59 #if !ASSERT_DISABLED60 SOFT_LINK_POINTER(AVFoundation, AVAudioSessionInterruptionNotification, NSString *)61 #endif62 63 @interface WebAudioSessionHelper : NSObject {64 WebCore::AudioSession* _callback;65 }66 - (id)initWithCallback:(WebCore::AudioSession*)callback;67 - (void)interruption:(NSNotification*)notification;68 @end69 70 @implementation WebAudioSessionHelper71 - (id)initWithCallback:(WebCore::AudioSession*)callback72 {73 self = [super init];74 if (!self)75 return nil;76 77 _callback = callback;78 79 ASSERT([WCAVAudioSessionInterruptionNotification isEqualToString:getAVAudioSessionInterruptionNotification()]);80 81 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(interruption:) name:WCAVAudioSessionInterruptionNotification object:nil];82 83 return self;84 }85 86 - (void)dealloc87 {88 [[NSNotificationCenter defaultCenter] removeObserver:self name:WCAVAudioSessionInterruptionNotification object:nil];89 [super dealloc];90 }91 92 - (void)interruption:(NSNotification *)notification93 {94 ASSERT([AVAudioSession sharedInstance] == [notification object]);95 if ([AVAudioSession sharedInstance] != [notification object])96 return;97 98 NSUInteger type = [[[notification userInfo] objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];99 if (type == AVAudioSessionInterruptionTypeBegan)100 _callback->beganAudioInterruption();101 else102 _callback->endedAudioInterruption();103 }104 @end105 106 57 namespace WebCore { 107 108 58 109 59 #if !LOG_DISABLED … … 129 79 public: 130 80 AudioSessionPrivate(AudioSession*); 131 RetainPtr<WebAudioSessionHelper> m_helper;132 81 AudioSession::CategoryType m_categoryOverride; 133 82 }; 134 83 135 AudioSessionPrivate::AudioSessionPrivate(AudioSession* session) 136 : m_helper(adoptNS([[WebAudioSessionHelper alloc] initWithCallback:session])) 137 , m_categoryOverride(AudioSession::None) 84 AudioSessionPrivate::AudioSessionPrivate(AudioSession*) 85 : m_categoryOverride(AudioSession::None) 138 86 { 139 87 } -
trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp
r166442 r171069 59 59 return AudioHardwareActivityType::IsInactive; 60 60 } 61 61 62 static bool currentDeviceSupportsLowPowerBufferSize() 63 { 64 AudioDeviceID deviceID = kAudioDeviceUnknown; 65 UInt32 descriptorSize = sizeof(deviceID); 66 AudioObjectPropertyAddress defaultOutputDeviceDescriptor = { 67 kAudioHardwarePropertyDefaultOutputDevice, 68 kAudioObjectPropertyScopeGlobal, 69 kAudioObjectPropertyElementMaster }; 70 71 if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &defaultOutputDeviceDescriptor, 0, 0, &descriptorSize, (void*)&deviceID)) 72 return false; 73 74 UInt32 transportType = kAudioDeviceTransportTypeUnknown; 75 descriptorSize = sizeof(transportType); 76 AudioObjectPropertyAddress tranportTypeDescriptor = { 77 kAudioDevicePropertyTransportType, 78 kAudioObjectPropertyScopeGlobal, 79 kAudioObjectPropertyElementMaster, 80 }; 81 82 if (AudioObjectGetPropertyData(deviceID, &tranportTypeDescriptor, 0, 0, &descriptorSize, &transportType)) 83 return false; 84 85 // Only allow low-power buffer size when using built-in output device, many external devices perform 86 // poorly with a large output buffer. 87 return kAudioDeviceTransportTypeBuiltIn == transportType; 88 } 89 90 static const AudioObjectPropertyAddress& processIsRunningPropertyDescriptor() 91 { 92 static AudioObjectPropertyAddress processIsRunningProperty = { 93 kAudioHardwarePropertyProcessIsRunning, 94 kAudioObjectPropertyScopeGlobal, 95 kAudioObjectPropertyElementMaster 96 }; 97 98 return processIsRunningProperty; 99 }; 100 101 static const AudioObjectPropertyAddress& outputDevicePropertyDescriptor() 102 { 103 static AudioObjectPropertyAddress outputDeviceProperty = { 104 kAudioHardwarePropertyDefaultOutputDevice, 105 kAudioObjectPropertyScopeGlobal, 106 kAudioObjectPropertyElementMaster 107 }; 108 109 return outputDeviceProperty; 110 }; 111 62 112 PassRefPtr<AudioHardwareListener> AudioHardwareListener::create(Client& client) 63 113 { … … 73 123 : AudioHardwareListener(client) 74 124 { 75 m_activity = isAudioHardwareProcessRunning(); 76 if (hardwareActivity() == AudioHardwareActivityType::Unknown) 77 return; 125 setHardwareActivity(isAudioHardwareProcessRunning()); 126 setOutputDeviceSupportsLowPowerMode(currentDeviceSupportsLowPowerBufferSize()); 78 127 79 AudioObjectPropertyAddress propertyAddress = { 80 kAudioHardwarePropertyProcessIsRunning, 81 kAudioObjectPropertyScopeGlobal, 82 kAudioObjectPropertyElementMaster 83 }; 84 85 m_block = Block_copy(^(UInt32, const AudioObjectPropertyAddress[]) { 86 setHardwareActive(isAudioHardwareProcessRunning()); 128 m_block = Block_copy(^(UInt32 count, const AudioObjectPropertyAddress properties[]) { 129 propertyChanged(count, properties); 87 130 }); 88 131 89 AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &propertyAddress, dispatch_get_main_queue(), m_block); 132 AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &processIsRunningPropertyDescriptor(), dispatch_get_main_queue(), m_block); 133 AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &outputDevicePropertyDescriptor(), dispatch_get_main_queue(), m_block); 90 134 } 91 135 92 136 AudioHardwareListenerMac::~AudioHardwareListenerMac() 93 137 { 94 if (hardwareActivity() == AudioHardwareActivityType::Unknown) 95 return; 96 97 AudioObjectPropertyAddress propertyAddress = { 98 kAudioHardwarePropertyProcessIsRunning, 99 kAudioObjectPropertyScopeGlobal, 100 kAudioObjectPropertyElementMaster 101 }; 102 103 AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &propertyAddress, dispatch_get_main_queue(), m_block); 104 138 AudioObjectRemovePropertyListenerBlock(kAudioObjectSystemObject, &processIsRunningPropertyDescriptor(), dispatch_get_main_queue(), m_block); 139 AudioObjectRemovePropertyListenerBlock(kAudioObjectSystemObject, &outputDevicePropertyDescriptor(), dispatch_get_main_queue(), m_block); 105 140 Block_release(m_block); 106 141 } 107 142 108 void AudioHardwareListenerMac:: setHardwareActive(AudioHardwareActivityType activity)143 void AudioHardwareListenerMac::propertyChanged(UInt32 propertyCount, const AudioObjectPropertyAddress properties[]) 109 144 { 110 if (activity == m_activity) 145 const AudioObjectPropertyAddress& deviceRunning = processIsRunningPropertyDescriptor(); 146 const AudioObjectPropertyAddress& outputDevice = outputDevicePropertyDescriptor(); 147 148 for (UInt32 i = 0; i < propertyCount; ++i) { 149 const AudioObjectPropertyAddress& property = properties[i]; 150 151 if (!memcmp(&property, &deviceRunning, sizeof(AudioObjectPropertyAddress))) 152 processIsRunningChanged(); 153 else if (!memcmp(&property, &outputDevice, sizeof(AudioObjectPropertyAddress))) 154 outputDeviceChanged(); 155 } 156 } 157 158 void AudioHardwareListenerMac::processIsRunningChanged() 159 { 160 AudioHardwareActivityType activity = isAudioHardwareProcessRunning(); 161 if (activity == hardwareActivity()) 111 162 return; 112 m_activity = activity;163 setHardwareActivity(activity); 113 164 114 165 if (hardwareActivity() == AudioHardwareActivityType::IsActive) … … 118 169 } 119 170 171 void AudioHardwareListenerMac::outputDeviceChanged() 172 { 173 setOutputDeviceSupportsLowPowerMode(currentDeviceSupportsLowPowerBufferSize()); 174 m_client.audioOutputDeviceChanged(); 175 } 176 120 177 } 121 178 -
trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h
r166442 r171069 39 39 static WTF::PassRefPtr<AudioHardwareListenerMac> create(Client&); 40 40 41 pr otected:41 private: 42 42 AudioHardwareListenerMac(Client&); 43 43 virtual ~AudioHardwareListenerMac(); 44 44 45 void setHardwareActive(AudioHardwareActivityType); 45 void processIsRunningChanged(); 46 void outputDeviceChanged(); 47 48 void propertyChanged(UInt32, const AudioObjectPropertyAddress[]); 49 46 50 AudioObjectPropertyListenerBlock m_block; 47 51 }; -
trunk/Source/WebCore/platform/audio/mac/MediaSessionManagerMac.cpp
r170485 r171069 51 51 // FIXME: <http://webkit.org/b/116725> Figure out why enabling the code below 52 52 // causes media LayoutTests to fail on 10.8. 53 AudioSession::sharedSession().setPreferredBufferSize(kLowPowerVideoBufferSize); 53 54 size_t bufferSize; 55 if (m_audioHardwareListener && m_audioHardwareListener->outputDeviceSupportsLowPowerMode()) 56 bufferSize = kLowPowerVideoBufferSize; 57 else 58 bufferSize = kWebAudioBufferSize; 59 60 AudioSession::sharedSession().setPreferredBufferSize(bufferSize); 54 61 } 55 62 #endif -
trunk/Source/WebKit2/ChangeLog
r171068 r171069 1 2014-07-14 Eric Carlson <eric.carlson@apple.com> 2 3 [Mac] don't enable low power audio mode on external output devices 4 https://bugs.webkit.org/show_bug.cgi?id=134877 5 6 Reviewed by Sam Weinig. 7 8 * PluginProcess/PluginProcess.h: Add an empty implementation of 9 AudioHardwareListener::audioOutputDeviceChanged. 10 1 11 2014-07-14 Tim Horton <timothy_horton@apple.com> 2 12 -
trunk/Source/WebKit2/PluginProcess/PluginProcess.h
r166845 r171069 102 102 virtual void audioHardwareDidBecomeActive() override; 103 103 virtual void audioHardwareDidBecomeInactive() override; 104 virtual void audioOutputDeviceChanged() override { } 104 105 105 106 void platformInitializePluginProcess(const PluginProcessCreationParameters&);
Note: See TracChangeset
for help on using the changeset viewer.