Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 3a7a2fc7cfa015de245a11892a1f059ddc29e7e1
      
https://github.com/WebKit/WebKit/commit/3a7a2fc7cfa015de245a11892a1f059ddc29e7e1
  Author: Gatolocoses <[email protected]>
  Date:   2026-10-15 (Thu, 15 Oct 2026)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  [GStreamer][MSE] REGRESSION(317766@main): Muted video hidden when loading 
starts fails with "Failed to push buffer"
https://bugs.webkit.org/show_bug.cgi?id=327551

Reviewed by Philippe Normand.

managePlayerSuspend() also runs at the end of createGSTPlayBin(), before the 
URI is set. Since
317766@main it skips the state change only when the pipeline is exactly at 
suspendTargetState(), so
an MSE pipeline still in NULL is set to PAUSED. playbin3 fails that change for 
lack of a URI, and the
rollback leaves playsink's ASYNC_START cached in the bin: the real READY to 
PAUSED change later skips
playsink, its chains stay in READY and the first buffer push fails ("Failed to 
push buffer").

Suspending must never raise the state, so skip the state change when the 
pipeline is at or below the
target state, as was done for NULL before 317766@main.

No new tests: layout tests run with 
WEBKIT_GST_ALLOW_PLAYBACK_OF_INVISIBLE_VIDEOS=1, which disables suspending.
Tested manually on WebKitGTK 2.54.0.

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::managePlayerSuspend):

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Canonical link: https://commits.webkit.org/323810@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to