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:
parent
ed4524eb01
commit
d736541ba6
@ -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)) {
|
||||
|
@ -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();
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user