From bb5b74146186e09fbe218bce409d77ee21a0cb86 Mon Sep 17 00:00:00 2001 From: mister-ben Date: Wed, 3 Aug 2022 18:47:08 +0200 Subject: [PATCH 1/2] fix: allow for techs slow to init in rvfc --- src/js/tech/tech.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/tech/tech.js b/src/js/tech/tech.js index b58b194b6e..91886711a2 100644 --- a/src/js/tech/tech.js +++ b/src/js/tech/tech.js @@ -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)) { From ac276d9e8ea29771191f47198657cd4db5ec2a61 Mon Sep 17 00:00:00 2001 From: mister-ben Date: Wed, 3 Aug 2022 18:55:47 +0200 Subject: [PATCH 2/2] add test --- test/unit/tech/tech.test.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/unit/tech/tech.test.js b/test/unit/tech/tech.test.js index 4dc4e51b04..57fca449df 100644 --- a/test/unit/tech/tech.test.js +++ b/test/unit/tech/tech.test.js @@ -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(); +});