Changeset 212889 in webkit
- Timestamp:
- Feb 23, 2017 8:28:47 AM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r212881 r212889 1 2017-02-23 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GStreamer] Several layout tests trigger GStreamer-CRITICAL **: gst_bin_get_by_name: assertion 'GST_IS_BIN (bin)' failed 4 https://bugs.webkit.org/show_bug.cgi?id=167016 5 6 Reviewed by Xabier Rodriguez-Calvar. 7 8 This is because we create AudioSourceProviderGStreamer objects that are never loaded. In the destructor the 9 AudioSourceProviderGStreamer calls gst_bin_get_by_name() on its m_audioSinkBin that is nullptr. We could simply 10 check m_audioSinkBin in the destructor, but I think it's better to simply not create 11 AudioSourceProviderGStreamer for nothing. MediaPlayerPrivateGStreamer should create the AudioSourceProvider on demand. 12 13 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 14 (WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer): Do not create the AudioSourceProvider. 15 (WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Call ensureAudioSourceProvider() before using m_audioSourceProvider. 16 (WebCore::MediaPlayerPrivateGStreamer::ensureAudioSourceProvider): Create the AudioSourceProvider if needed. 17 (WebCore::MediaPlayerPrivateGStreamer::audioSourceProvider): Ensure and return the m_audioSourceProvider. 18 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h: 19 1 20 2017-02-23 Tomas Popela <tpopela@redhat.com> 2 21 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r212521 r212889 172 172 , m_totalBytes(0) 173 173 , m_preservesPitch(false) 174 #if ENABLE(WEB_AUDIO)175 , m_audioSourceProvider(std::make_unique<AudioSourceProviderGStreamer>())176 #endif177 174 { 178 175 #if USE(GLIB) … … 1992 1989 #if ENABLE(WEB_AUDIO) 1993 1990 audioSinkBin = gst_bin_new("audio-sink"); 1991 ensureAudioSourceProvider(); 1994 1992 m_audioSourceProvider->configureAudioBin(audioSinkBin, nullptr); 1995 1993 return audioSinkBin; … … 2014 2012 2015 2013 #if ENABLE(WEB_AUDIO) 2014 ensureAudioSourceProvider(); 2016 2015 m_audioSourceProvider->configureAudioBin(audioSinkBin, scale); 2017 2016 #else … … 2032 2031 #if ENABLE(WEB_AUDIO) 2033 2032 audioSinkBin = gst_bin_new("audio-sink"); 2033 ensureAudioSourceProvider(); 2034 2034 m_audioSourceProvider->configureAudioBin(audioSinkBin, nullptr); 2035 2035 return audioSinkBin; … … 2045 2045 return sink; 2046 2046 } 2047 2048 #if ENABLE(WEB_AUDIO) 2049 void MediaPlayerPrivateGStreamer::ensureAudioSourceProvider() 2050 { 2051 if (!m_audioSourceProvider) 2052 m_audioSourceProvider = std::make_unique<AudioSourceProviderGStreamer>(); 2053 } 2054 2055 AudioSourceProvider* MediaPlayerPrivateGStreamer::audioSourceProvider() 2056 { 2057 ensureAudioSourceProvider(); 2058 return m_audioSourceProvider.get(); 2059 } 2060 #endif 2047 2061 2048 2062 void MediaPlayerPrivateGStreamer::createGSTPlayBin() -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
r212349 r212889 128 128 129 129 #if ENABLE(WEB_AUDIO) 130 AudioSourceProvider* audioSourceProvider() override { return reinterpret_cast<AudioSourceProvider*>(m_audioSourceProvider.get()); }130 AudioSourceProvider* audioSourceProvider() override; 131 131 #endif 132 132 … … 209 209 #endif 210 210 211 void ensureAudioSourceProvider(); 211 212 void setAudioStreamProperties(GObject*); 212 213
Note: See TracChangeset
for help on using the changeset viewer.