| Index: Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
|
| diff --git a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp b/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
|
| index 17d2fcddf67972131cfe5fb73132da35aafca975..656e638ec8a510efe0627b976579c0556b4757de 100644
|
| --- a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
|
| +++ b/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp
|
| @@ -841,6 +841,11 @@ WebMediaPlayerClientImpl::WebMediaPlayerClientImpl()
|
| #if ENABLE(WEB_AUDIO)
|
| void WebMediaPlayerClientImpl::AudioSourceProviderImpl::wrap(WebAudioSourceProvider* provider)
|
| {
|
| + MutexLocker locker(provideInputLock);
|
| +
|
| + if (m_webAudioSourceProvider && provider != m_webAudioSourceProvider)
|
| + m_webAudioSourceProvider->setClient(0);
|
| +
|
| m_webAudioSourceProvider = provider;
|
| if (m_webAudioSourceProvider)
|
| m_webAudioSourceProvider->setClient(m_client.get());
|
| @@ -848,6 +853,8 @@ void WebMediaPlayerClientImpl::AudioSourceProviderImpl::wrap(WebAudioSourceProvi
|
|
|
| void WebMediaPlayerClientImpl::AudioSourceProviderImpl::setClient(AudioSourceProviderClient* client)
|
| {
|
| + MutexLocker locker(provideInputLock);
|
| +
|
| if (client)
|
| m_client = adoptPtr(new WebMediaPlayerClientImpl::AudioClientImpl(client));
|
| else
|
| @@ -863,7 +870,8 @@ void WebMediaPlayerClientImpl::AudioSourceProviderImpl::provideInput(AudioBus* b
|
| if (!bus)
|
| return;
|
|
|
| - if (!m_webAudioSourceProvider) {
|
| + MutexTryLocker tryLocker(provideInputLock);
|
| + if (!tryLocker.locked() || !m_webAudioSourceProvider || !m_client.get()) {
|
| bus->zero();
|
| return;
|
| }
|
|
|