Title: [274150] trunk
Revision
274150
Author
[email protected]
Date
2021-03-09 08:55:35 -0800 (Tue, 09 Mar 2021)

Log Message

[WebRTC][GStreamer] webrtc/multi-video.html crashes
https://bugs.webkit.org/show_bug.cgi?id=222792

Patch by Philippe Normand <[email protected]> on 2021-03-09
Reviewed by Xabier Rodriguez-Calvar.

Source/WebCore:

Add safeguards preventing removal of a pad that was not yet added.

* platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
(webkitMediaStreamSrcAddPad):
(webkitMediaStreamSrcRemovePad):

LayoutTests:

Update expectations for webrtc/multi-video.html which is currently expected to fail.

* platform/glib/TestExpectations:
* platform/gtk/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (274149 => 274150)


--- trunk/LayoutTests/ChangeLog	2021-03-09 16:53:16 UTC (rev 274149)
+++ trunk/LayoutTests/ChangeLog	2021-03-09 16:55:35 UTC (rev 274150)
@@ -1,3 +1,15 @@
+2021-03-09  Philippe Normand  <[email protected]>
+
+        [WebRTC][GStreamer] webrtc/multi-video.html crashes
+        https://bugs.webkit.org/show_bug.cgi?id=222792
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Update expectations for webrtc/multi-video.html which is currently expected to fail.
+        
+        * platform/glib/TestExpectations:
+        * platform/gtk/TestExpectations:
+
 2021-03-08  Antoine Quint  <[email protected]>
 
         Select CSS properties animating as float should not allow negative values

Modified: trunk/LayoutTests/platform/glib/TestExpectations (274149 => 274150)


--- trunk/LayoutTests/platform/glib/TestExpectations	2021-03-09 16:53:16 UTC (rev 274149)
+++ trunk/LayoutTests/platform/glib/TestExpectations	2021-03-09 16:55:35 UTC (rev 274150)
@@ -1051,10 +1051,11 @@
 webkit.org/b/219825 [ Release ] webrtc/sframe-keys.html [ Skip ]
 webkit.org/b/219825 [ Debug ] webrtc/sframe-keys.html [ Failure ]
 
-
 webkit.org/b/221504 webrtc/peer-connection-remote-audio-mute2.html  [ Failure ]
 webkit.org/b/221504 webrtc/peer-connection-remote-audio-mute.html  [ Failure Timeout ]
 
+webkit.org/b/222794 webrtc/multi-video.html [ Failure ]
+
 #////////////////////////////////////////////////////////////////////////////////////////
 # End of WebRTC-related bugs
 #////////////////////////////////////////////////////////////////////////////////////////
@@ -1851,7 +1852,6 @@
 webkit.org/b/187064 webrtc/captureCanvas-webrtc.html
 webkit.org/b/187064 webrtc/datachannel/mdns-ice-candidates.html
 webkit.org/b/187064 webrtc/libwebrtc/descriptionGetters.html
-webkit.org/b/187064 webrtc/multi-video.html
 webkit.org/b/187064 webrtc/peer-connection-track-end.html
 webkit.org/b/187064 webrtc/video-addTrack.html
 webkit.org/b/187064 webrtc/video-addTransceiver.html

Modified: trunk/LayoutTests/platform/gtk/TestExpectations (274149 => 274150)


--- trunk/LayoutTests/platform/gtk/TestExpectations	2021-03-09 16:53:16 UTC (rev 274149)
+++ trunk/LayoutTests/platform/gtk/TestExpectations	2021-03-09 16:55:35 UTC (rev 274150)
@@ -627,7 +627,6 @@
 webkit.org/b/187064 webrtc/video-addTransceiver.html
 webkit.org/b/187064 webrtc/peer-connection-track-end.html
 webkit.org/b/187064 webrtc/video.html
-webkit.org/b/187064 webrtc/multi-video.html
 webkit.org/b/187064 webrtc/video-addTrack.html
 webkit.org/b/187064 webrtc/video-rotation.html
 webkit.org/b/187064 webrtc/video-mute.html

Modified: trunk/Source/WebCore/ChangeLog (274149 => 274150)


--- trunk/Source/WebCore/ChangeLog	2021-03-09 16:53:16 UTC (rev 274149)
+++ trunk/Source/WebCore/ChangeLog	2021-03-09 16:55:35 UTC (rev 274150)
@@ -1,5 +1,18 @@
 2021-03-09  Philippe Normand  <[email protected]>
 
+        [WebRTC][GStreamer] webrtc/multi-video.html crashes
+        https://bugs.webkit.org/show_bug.cgi?id=222792
+
+        Reviewed by Xabier Rodriguez-Calvar.
+
+        Add safeguards preventing removal of a pad that was not yet added.
+
+        * platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp:
+        (webkitMediaStreamSrcAddPad):
+        (webkitMediaStreamSrcRemovePad):
+
+2021-03-09  Philippe Normand  <[email protected]>
+
         [GStreamer][WebRTC] VideoEncoder still doesn't comply with WebKit style
         https://bugs.webkit.org/show_bug.cgi?id=222901
 

Modified: trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp (274149 => 274150)


--- trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp	2021-03-09 16:53:16 UTC (rev 274149)
+++ trunk/Source/WebCore/platform/mediastream/gstreamer/GStreamerMediaStreamSource.cpp	2021-03-09 16:55:35 UTC (rev 274150)
@@ -454,7 +454,7 @@
     gst_pad_set_active(ghostPad, TRUE);
     gst_element_add_pad(GST_ELEMENT_CAST(self), ghostPad);
 
-    auto proxyPad = adoptGRef(GST_PAD(gst_proxy_pad_get_internal(GST_PROXY_PAD(ghostPad))));
+    auto proxyPad = adoptGRef(GST_PAD_CAST(gst_proxy_pad_get_internal(GST_PROXY_PAD(ghostPad))));
     gst_flow_combiner_add_pad(self->priv->flowCombiner.get(), proxyPad.get());
     gst_pad_set_chain_function(proxyPad.get(), static_cast<GstPadChainFunction>(webkitMediaStreamSrcChain));
 
@@ -464,8 +464,13 @@
 static void webkitMediaStreamSrcRemovePad(WebKitMediaStreamSrc* self, const char* padName)
 {
     auto pad = adoptGRef(gst_element_get_static_pad(GST_ELEMENT_CAST(self), padName));
-    auto proxyPad = adoptGRef(GST_PAD(gst_proxy_pad_get_internal(GST_PROXY_PAD(pad.get()))));
-    gst_flow_combiner_remove_pad(self->priv->flowCombiner.get(), proxyPad.get());
+    if (!pad)
+        return;
+
+    auto proxyPad = adoptGRef(GST_PAD_CAST(gst_proxy_pad_get_internal(GST_PROXY_PAD(pad.get()))));
+    if (proxyPad)
+        gst_flow_combiner_remove_pad(self->priv->flowCombiner.get(), proxyPad.get());
+
     gst_pad_set_active(pad.get(), FALSE);
     gst_element_remove_pad(GST_ELEMENT_CAST(self), pad.get());
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to