1
0
mirror of https://github.com/videojs/video.js.git synced 2025-01-02 06:32:07 +02:00

fix: allow for techs that init slowly in rvfc (#7864)

Don't call tech.paused() in the requestVideoFrameCallback fallback if the tech is not ready. I've seen this is an issue in the Flash tech, as its methods are set up after the swf loads. Yes, Flash, it's 2022, but in theory another tech could be impacted if it's also async.
This commit is contained in:
mister-ben 2022-09-09 19:52:34 +02:00 committed by GitHub
parent ed4524eb01
commit d736541ba6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View File

@ -869,7 +869,7 @@ class Tech extends Component {
requestVideoFrameCallback(cb) {
const id = Guid.newGUID();
if (this.paused()) {
if (!this.isReady_ || this.paused()) {
this.queuedHanders_.add(id);
this.one('playing', () => {
if (this.queuedHanders_.has(id)) {

View File

@ -770,3 +770,21 @@ QUnit.test('returns an empty object for getVideoPlaybackQuality', function(asser
assert.deepEqual(tech.getVideoPlaybackQuality(), {}, 'returns an empty object');
tech.dispose();
});
QUnit.test('requestVideoFrameCallback waits if tech not ready', function(assert) {
const tech = new Tech();
const cbSpy = sinon.spy();
tech.paused = sinon.spy();
tech.isReady_ = false;
tech.requestVideoFrameCallback(cbSpy);
assert.notOk(tech.paused.called, 'paused not called on tech that is not ready');
tech.trigger('playing');
assert.ok(cbSpy.called, 'callback was called on tech playing');
tech.dispose();
});