Bug 286750
| Summary: | [GStreamer] Handle pre-roll in setVisibleInViewport() | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Alicia Boya García <aboya> |
| Component: | WebKitGTK | Assignee: | Alicia Boya García <aboya> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bugs-noreply |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Alicia Boya García
Inside the player suspension code in setVisibleInViewport(), the
pipeline state is saved so that the pipeline can be set back to it when
later resuming.
However, the existing code was using the current state instead of the
target state. As a consequence, if the pipeline was still prerolling,
the pipeline would be set to READY instead of PAUSED on resume.
This patch fixes that issue by reading both the current and pending
state, and using the pending state if not VOID_PENDING.
Removing this unexpected transition to READY has reduced the amount of
crashes in presence of muted video and scrolling; however, I wouldn't go
so far as blaming the crashes on this bug, as changing the pipeline
state should not crash the pipeline.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Alicia Boya García
Pull request: https://github.com/WebKit/WebKit/pull/39765
EWS
Committed 289607@main (aa09557dfddc): <https://commits.webkit.org/289607@main>
Reviewed commits have been landed. Closing PR #39765 and removing active labels.