Bug 139496

Summary: [GStreamer] Fix deadlock when shutting down AudioDestination
Product: WebKit Reporter: Sebastian Dröge (slomo) <slomo>
Component: MediaAssignee: Sebastian Dröge (slomo) <slomo>
Status: RESOLVED FIXED    
Severity: Major CC: commit-queue, pnormand
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch none

Sebastian Dröge (slomo)
Reported 2014-12-10 10:52:36 PST
Patch coming soon
Attachments
Patch (4.51 KB, patch)
2014-12-10 10:53 PST, Sebastian Dröge (slomo)
no flags
Patch (4.55 KB, patch)
2014-12-12 11:06 PST, Sebastian Dröge (slomo)
no flags
Patch (4.59 KB, patch)
2014-12-15 10:19 PST, Sebastian Dröge (slomo)
no flags
Sebastian Dröge (slomo)
Comment 1 2014-12-10 10:53:49 PST
Sebastian Dröge (slomo)
Comment 2 2014-12-10 11:01:30 PST
The GStreamer bug will be fixed in 1.4.5: https://bugzilla.gnome.org/show_bug.cgi?id=740001
Philippe Normand
Comment 3 2014-12-11 23:56:11 PST
Comment on attachment 243048 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=243048&action=review Looks good, thanks! Just a few nits to brag about :) > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:343 > + // FLUSHING and EOS are no errors are not errors. > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:378 > + // FLUSHING and EOS are no errors Ditto :) > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:385 > + } else { > + gst_buffer_unref(channelBuffer); > } for one-line blocks we don't use {} usually.
Sebastian Dröge (slomo)
Comment 4 2014-12-12 01:10:09 PST
(In reply to comment #3) > > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:385 > > + } else { > > + gst_buffer_unref(channelBuffer); > > } > > for one-line blocks we don't use {} usually. Even for cases like if (foo) { multiple lines } else one_line ? I'll change that later when I'm at my laptop again. Thanks for the fast review :)
Philippe Normand
Comment 5 2014-12-12 01:20:38 PST
Yep but you can double-check with the check-webkit-style script.
Sebastian Dröge (slomo)
Comment 6 2014-12-12 11:06:41 PST
Philippe Normand
Comment 7 2014-12-14 23:28:09 PST
Comment on attachment 243206 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=243206&action=review > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:429 > + gst_buffer_pool_set_flushing(src->priv->pool, TRUE); Seems like an #ifdef is needed here to make EFL EWS happy... Unless they bump their jhbuild gstreamer version to 1.4.x but that's not up to me to decide :)
Sebastian Dröge (slomo)
Comment 8 2014-12-15 00:04:50 PST
(In reply to comment #7) > Comment on attachment 243206 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=243206&action=review > > > Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:429 > > + gst_buffer_pool_set_flushing(src->priv->pool, TRUE); > > Seems like an #ifdef is needed here to make EFL EWS happy... Unless they > bump their jhbuild gstreamer version to 1.4.x but that's not up to me to > decide :) An #ifdef should be fine. That's really just an optimization in the end :) If we're shutting down, gst_buffer_pool_acquire() would return FLUSHING afterwards and we would go out of the srcpad loop earlier... instead of going out of it when trying to push buffers to the appsrcs.
Sebastian Dröge (slomo)
Comment 9 2014-12-15 10:19:38 PST
WebKit Commit Bot
Comment 10 2014-12-16 00:17:12 PST
Comment on attachment 243300 [details] Patch Clearing flags on attachment: 243300 Committed r177341: <http://trac.webkit.org/changeset/177341>
WebKit Commit Bot
Comment 11 2014-12-16 00:17:17 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.