Commit 2b4f979
committed
[GStreamer][MSE] Take playbin's states lock when sending seek event
https://bugs.webkit.org/show_bug.cgi?id=275566
Reviewed by Alicia Boya Garcia.
This fixes possible race between application (triggering another seek from 'seeked' event) and 'state chagne'
continuation (triggered by playbin).
Top level bin element does change the state as result of 'async-done' handling from previous seek request (see
gst_bin_continue_func in gstbin.c). Which may race with handling of 'async-start' posted by sinks on flushing seek. And
may leave the pipeline in inconsistent state and 'hanging' seek that never finishes.
By taking the states lock of top level bin element player will wait for possible state change continuation to complete
before sending next seek event.
Based on a patch by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>.
* Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::doSeek):
Canonical link: https://commits.webkit.org/280168@main1 parent eb6ae0a commit 2b4f979
1 file changed
Lines changed: 13 additions & 2 deletions
Lines changed: 13 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
268 | 268 | | |
269 | 269 | | |
270 | 270 | | |
271 | | - | |
272 | | - | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
273 | 284 | | |
274 | 285 | | |
275 | 286 | | |
| |||
0 commit comments