Title: [277100] trunk/Source/WebCore
Revision
277100
Author
[email protected]
Date
2021-05-06 10:13:47 -0700 (Thu, 06 May 2021)

Log Message

[WebAudio][GStreamer] socketpair leaks
https://bugs.webkit.org/show_bug.cgi?id=225463

Reviewed by Žan Doberšek.

* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): Properly dispose of
the GStreamer pipeline and the resources it has hold on.
* platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
(webKitWebAudioSrcChangeState): The ref returned by gst_buffer_pool_new() is transfer-full,
so we need to adopt it here.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (277099 => 277100)


--- trunk/Source/WebCore/ChangeLog	2021-05-06 17:05:23 UTC (rev 277099)
+++ trunk/Source/WebCore/ChangeLog	2021-05-06 17:13:47 UTC (rev 277100)
@@ -1,3 +1,17 @@
+2021-05-06  Philippe Normand  <[email protected]>
+
+        [WebAudio][GStreamer] socketpair leaks
+        https://bugs.webkit.org/show_bug.cgi?id=225463
+
+        Reviewed by Žan Doberšek.
+
+        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
+        (WebCore::AudioSourceProviderGStreamer::~AudioSourceProviderGStreamer): Properly dispose of
+        the GStreamer pipeline and the resources it has hold on.
+        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+        (webKitWebAudioSrcChangeState): The ref returned by gst_buffer_pool_new() is transfer-full,
+        so we need to adopt it here.
+
 2021-05-06  Dean Jackson  <[email protected]>
 
         [WebXR] Add IOSurface to FrameData::LayerData

Modified: trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp (277099 => 277100)


--- trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp	2021-05-06 17:05:23 UTC (rev 277099)
+++ trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp	2021-05-06 17:13:47 UTC (rev 277100)
@@ -118,6 +118,12 @@
     }
 
     setClient(nullptr);
+#if ENABLE(MEDIA_STREAM)
+    if (m_pipeline) {
+        disconnectSimpleBusMessageCallback(m_pipeline.get());
+        gst_element_set_state(m_pipeline.get(), GST_STATE_NULL);
+    }
+#endif
 }
 
 void AudioSourceProviderGStreamer::configureAudioBin(GstElement* audioBin, GstElement* audioSink)

Modified: trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp (277099 => 277100)


--- trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp	2021-05-06 17:05:23 UTC (rev 277099)
+++ trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp	2021-05-06 17:13:47 UTC (rev 277100)
@@ -456,7 +456,7 @@
 
     switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED: {
-        priv->pool = gst_buffer_pool_new();
+        priv->pool = adoptGRef(gst_buffer_pool_new());
         GstStructure* config = gst_buffer_pool_get_config(priv->pool.get());
         gst_buffer_pool_config_set_params(config, nullptr, priv->bufferSize, 0, 0);
         gst_buffer_pool_set_config(priv->pool.get(), config);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to