diff options
Diffstat (limited to 'Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp')
-rw-r--r-- | Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp b/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp index e570dca5a..e75c73947 100644 --- a/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp +++ b/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp @@ -92,9 +92,11 @@ WebMediaPlayer* WebMediaPlayerClientImpl::mediaPlayer() const WebMediaPlayerClientImpl::~WebMediaPlayerClientImpl() { #if USE(ACCELERATED_COMPOSITING) - MutexLocker locker(m_compositingMutex); if (m_videoFrameProviderClient) m_videoFrameProviderClient->stopUsingProvider(); + // No need for a lock here, as getCurrentFrame/putCurrentFrame can't be + // called now that the client is no longer using this provider. Also, load() + // and this destructor are called from the same thread. if (m_webMediaPlayer) m_webMediaPlayer->setStreamTextureClient(0); #endif @@ -312,8 +314,8 @@ void WebMediaPlayerClientImpl::load(const String& url) { m_url = url; + MutexLocker locker(m_webMediaPlayerMutex); if (m_preload == MediaPlayer::None) { - MutexLocker locker(m_compositingMutex); #if ENABLE(WEB_AUDIO) m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlayer's WebAudioSourceProvider. #endif @@ -325,7 +327,6 @@ void WebMediaPlayerClientImpl::load(const String& url) void WebMediaPlayerClientImpl::loadInternal() { - MutexLocker locker(m_compositingMutex); #if ENABLE(WEB_AUDIO) m_audioSourceProvider.wrap(0); // Clear weak reference to m_webMediaPlayer's WebAudioSourceProvider. #endif @@ -766,7 +767,7 @@ bool WebMediaPlayerClientImpl::acceleratedRenderingInUse() void WebMediaPlayerClientImpl::setVideoFrameProviderClient(WebVideoFrameProvider::Client* client) { - MutexLocker locker(m_compositingMutex); + MutexLocker locker(m_webMediaPlayerMutex); if (m_videoFrameProviderClient) m_videoFrameProviderClient->stopUsingProvider(); m_videoFrameProviderClient = client; @@ -776,8 +777,10 @@ void WebMediaPlayerClientImpl::setVideoFrameProviderClient(WebVideoFrameProvider WebVideoFrame* WebMediaPlayerClientImpl::getCurrentFrame() { - MutexLocker locker(m_compositingMutex); + // This function is called only by the client. + MutexLocker locker(m_webMediaPlayerMutex); ASSERT(!m_currentVideoFrame); + ASSERT(m_videoFrameProviderClient); if (m_webMediaPlayer) m_currentVideoFrame = m_webMediaPlayer->getCurrentFrame(); return m_currentVideoFrame; @@ -785,8 +788,10 @@ WebVideoFrame* WebMediaPlayerClientImpl::getCurrentFrame() void WebMediaPlayerClientImpl::putCurrentFrame(WebVideoFrame* videoFrame) { - MutexLocker locker(m_compositingMutex); + // This function is called only by the client. + MutexLocker locker(m_webMediaPlayerMutex); ASSERT(videoFrame == m_currentVideoFrame); + ASSERT(m_videoFrameProviderClient); if (!videoFrame) return; if (m_webMediaPlayer) |