Title: [171149] trunk/Source/WebCore
- Revision
- 171149
- Author
- [email protected]
- Date
- 2014-07-16 12:10:22 -0700 (Wed, 16 Jul 2014)
Log Message
REGRESSION(r171069) 75% repro crash in WebCore::AudioHardwareListenerMac::processIsRunningChanged()
https://bugs.webkit.org/show_bug.cgi?id=134986
Reviewed by Eric Carlson.
Add a WeakPtrFactory to AudioHardwareListenerMac, so that if CoreAudio calls our block after
being unregistered, we can bail early instead of calling into a deleted object.
* platform/audio/mac/AudioHardwareListenerMac.cpp:
(WebCore::AudioHardwareListenerMac::AudioHardwareListenerMac):
* platform/audio/mac/AudioHardwareListenerMac.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (171148 => 171149)
--- trunk/Source/WebCore/ChangeLog 2014-07-16 18:05:09 UTC (rev 171148)
+++ trunk/Source/WebCore/ChangeLog 2014-07-16 19:10:22 UTC (rev 171149)
@@ -1,5 +1,19 @@
2014-07-16 Jer Noble <[email protected]>
+ REGRESSION(r171069) 75% repro crash in WebCore::AudioHardwareListenerMac::processIsRunningChanged()
+ https://bugs.webkit.org/show_bug.cgi?id=134986
+
+ Reviewed by Eric Carlson.
+
+ Add a WeakPtrFactory to AudioHardwareListenerMac, so that if CoreAudio calls our block after
+ being unregistered, we can bail early instead of calling into a deleted object.
+
+ * platform/audio/mac/AudioHardwareListenerMac.cpp:
+ (WebCore::AudioHardwareListenerMac::AudioHardwareListenerMac):
+ * platform/audio/mac/AudioHardwareListenerMac.h:
+
+2014-07-16 Jer Noble <[email protected]>
+
[MSE] REGRESSION(r171033): ASSERT in WebCore::MediaSource::onReadyStateChange()
https://bugs.webkit.org/show_bug.cgi?id=134941
Modified: trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp (171148 => 171149)
--- trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp 2014-07-16 18:05:09 UTC (rev 171148)
+++ trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.cpp 2014-07-16 19:10:22 UTC (rev 171149)
@@ -121,12 +121,15 @@
AudioHardwareListenerMac::AudioHardwareListenerMac(Client& client)
: AudioHardwareListener(client)
+ , m_weakFactory(this)
{
setHardwareActivity(isAudioHardwareProcessRunning());
setOutputDeviceSupportsLowPowerMode(currentDeviceSupportsLowPowerBufferSize());
+ auto weakThis = m_weakFactory.createWeakPtr();
m_block = Block_copy(^(UInt32 count, const AudioObjectPropertyAddress properties[]) {
- propertyChanged(count, properties);
+ if (weakThis)
+ weakThis->propertyChanged(count, properties);
});
AudioObjectAddPropertyListenerBlock(kAudioObjectSystemObject, &processIsRunningPropertyDescriptor(), dispatch_get_main_queue(), m_block);
Modified: trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h (171148 => 171149)
--- trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h 2014-07-16 18:05:09 UTC (rev 171148)
+++ trunk/Source/WebCore/platform/audio/mac/AudioHardwareListenerMac.h 2014-07-16 19:10:22 UTC (rev 171149)
@@ -27,6 +27,7 @@
#define AudioHardwareListenerMac_h
#include "AudioHardwareListener.h"
+#include <wtf/WeakPtr.h>
#if PLATFORM(MAC)
@@ -48,6 +49,7 @@
void propertyChanged(UInt32, const AudioObjectPropertyAddress[]);
AudioObjectPropertyListenerBlock m_block;
+ WeakPtrFactory<AudioHardwareListenerMac> m_weakFactory;
};
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes