From d85daf4227dcfdf8c2529af794d2ccb33d542057 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Mon, 8 Apr 2019 12:17:31 -0400 Subject: [PATCH 1/5] update one more frame after canvas source paused Calling `canvasSource.pause()` lets us know we can stop pulling in updates from it. Since it is possible that changes were made to the canvas source since the last render we should pull in one more update before stopping. This also lets you call play and pause immediately to render just one frame: ctx.fillRect(10, 10, 50, 50); canvasSource.play(); canvasSource.pause(); --- src/source/canvas_source.js | 5 ++++- test/integration/image/1.png | Bin 0 -> 11076 bytes test/suite_implementation.js | 13 +++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/integration/image/1.png diff --git a/src/source/canvas_source.js b/src/source/canvas_source.js index 0710c3c3864..b835a8bb78b 100644 --- a/src/source/canvas_source.js +++ b/src/source/canvas_source.js @@ -67,6 +67,7 @@ class CanvasSource extends ImageSource { play: () => void; pause: () => void; _playing: boolean; + _dirty: boolean; /** * @private @@ -131,6 +132,7 @@ class CanvasSource extends ImageSource { this.pause = function() { this._playing = false; + this._dirty = true; }; this._finishLoading(); @@ -199,8 +201,9 @@ class CanvasSource extends ImageSource { if (!this.texture) { this.texture = new Texture(context, this.canvas, gl.RGBA, { premultiply: true }); - } else if (resize || this._playing) { + } else if (resize || this._playing || this._dirty) { this.texture.update(this.canvas, { premultiply: true }); + this._dirty = false; } for (const w in this.tiles) { diff --git a/test/integration/image/1.png b/test/integration/image/1.png new file mode 100644 index 0000000000000000000000000000000000000000..2525b73d760ea18c71618a2b4d9859166dd6e014 GIT binary patch literal 11076 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz$C-L1{AT3JzmYgz*wE>>>S|f?5q$_l%JNF zlghxLF>&fdYwyDWBFF!)oZ56nTr9S^Sx;+eSHEk9@rnnFuQl<b@tK8CrVMPemU7)y1Zig>aFj?TSL!=F(^9aXq+kP@b6&f zmwEP4w(!WJWgXpeujibWOSjnndtQl`(m$1VS{hb=r8$J$eXkmHs&}MMU9(2$vZR}l zZ{6O`O8b4gme%w=%{_ea$kQ*gzMP-^*Rikc#aAZH^L;wb=dF@-q~;1eHgWTfF_>y- z_4!`&Ztd0o=CuARQr=e0<}UPCw@~zR<*!9G*FPVyx*BzpO)n_qIpd4J43p+MRIxdk{@DC_Q~9xEn{W%pE&F%o zrE+l0W!@Tm{qL^AySH@jJ{Q%Pd0+ZS`mvW+j>ZFHgR{URvY3H^TNs2H8D`Cq0LIPL z%#etZ2wxwolpi z<;HsXMd|v6mX?Eakt!T9!iATNWWfU~0o>yPhVJ6I(5 zM6%C)=l}f1YaaIo21X_p4gm!RFhfrKhunE}IbP0;y~xDRuvSj%s2R9o&y`^;B)?PGZ7hs77DgKj&^mIou`t?LfYp(s(-6?H zw$W*b(P;>1t7){cFxprcZ7hs77Dg8hjjpc(_oJz|6s=Ky_f|F+(HEZ2KnpBAUHx3v IIVCg!0NN}_&Hw-a literal 0 HcmV?d00001 diff --git a/test/suite_implementation.js b/test/suite_implementation.js index 634648d295f..a0957732cc2 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -157,6 +157,13 @@ module.exports = function(style, options, _callback) { // eslint-disable-line im map.addLayer(new customLayerImplementations[operation[1]](), operation[2]); map._render(); applyOperations(map, operations.slice(1), callback); + } else if (operation[0] === 'updateFakeCanvas') { + updateFakeCanvas(window.document, options.addFakeCanvas.id, operation[2]); + const canvasSource = map.getSource(operation[1]); + canvasSource.play(); + canvasSource.pause(); + map._render(); + applyOperations(map, operations.slice(1), callback); } else if (operation[0] === 'setStyle') { // Disable local ideograph generation (enabled by default) for // consistent local ideograph rendering using fixtures in all runs of the test suite. @@ -178,3 +185,9 @@ function createFakeCanvas(document, id, imagePath) { fakeCanvas.height = image.height; return fakeCanvas; } + +function updateFakeCanvas(document, id, imagePath) { + const fakeCanvas = document.getElementById(id); + const image = PNG.sync.read(fs.readFileSync(path.join(__dirname, './integration', imagePath))); + fakeCanvas.data = image.data; +} From 6f8feba89cafc8695eae6d099d1e8de67990af3a Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Wed, 10 Apr 2019 10:10:25 -0400 Subject: [PATCH 2/5] add test --- .../render-tests/canvas/update/expected.png | Bin 0 -> 5358 bytes .../render-tests/canvas/update/style.json | 57 ++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 test/integration/render-tests/canvas/update/expected.png create mode 100644 test/integration/render-tests/canvas/update/style.json diff --git a/test/integration/render-tests/canvas/update/expected.png b/test/integration/render-tests/canvas/update/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1f2ab66e37b45e26c2184d2288779fe950d0f7 GIT binary patch literal 5358 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 Date: Wed, 10 Apr 2019 10:19:50 -0400 Subject: [PATCH 3/5] don't render changes made after canvasSource.pause() --- src/source/canvas_source.js | 10 +++++----- test/integration/render-tests/canvas/update/style.json | 2 +- test/suite_implementation.js | 5 ++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/source/canvas_source.js b/src/source/canvas_source.js index b835a8bb78b..f21785cb50a 100644 --- a/src/source/canvas_source.js +++ b/src/source/canvas_source.js @@ -67,7 +67,6 @@ class CanvasSource extends ImageSource { play: () => void; pause: () => void; _playing: boolean; - _dirty: boolean; /** * @private @@ -131,8 +130,10 @@ class CanvasSource extends ImageSource { }; this.pause = function() { - this._playing = false; - this._dirty = true; + if (this._playing) { + this.prepare(); + this._playing = false; + } }; this._finishLoading(); @@ -201,9 +202,8 @@ class CanvasSource extends ImageSource { if (!this.texture) { this.texture = new Texture(context, this.canvas, gl.RGBA, { premultiply: true }); - } else if (resize || this._playing || this._dirty) { + } else if (resize || this._playing) { this.texture.update(this.canvas, { premultiply: true }); - this._dirty = false; } for (const w in this.tiles) { diff --git a/test/integration/render-tests/canvas/update/style.json b/test/integration/render-tests/canvas/update/style.json index 90048edf230..c7b5635f29f 100644 --- a/test/integration/render-tests/canvas/update/style.json +++ b/test/integration/render-tests/canvas/update/style.json @@ -10,7 +10,7 @@ }, "operations": [ ["wait"], - ["updateFakeCanvas", "canvas", "./image/1.png"] + ["updateFakeCanvas", "canvas", "./image/1.png", "./image/0.png"] ] } }, diff --git a/test/suite_implementation.js b/test/suite_implementation.js index a0957732cc2..bc9554002df 100644 --- a/test/suite_implementation.js +++ b/test/suite_implementation.js @@ -158,10 +158,13 @@ module.exports = function(style, options, _callback) { // eslint-disable-line im map._render(); applyOperations(map, operations.slice(1), callback); } else if (operation[0] === 'updateFakeCanvas') { - updateFakeCanvas(window.document, options.addFakeCanvas.id, operation[2]); const canvasSource = map.getSource(operation[1]); canvasSource.play(); + // update before pause should be rendered + updateFakeCanvas(window.document, options.addFakeCanvas.id, operation[2]); canvasSource.pause(); + // update after pause should not be rendered + updateFakeCanvas(window.document, options.addFakeCanvas.id, operation[3]); map._render(); applyOperations(map, operations.slice(1), callback); } else if (operation[0] === 'setStyle') { From 1edea35c4ff6e79b1329d54205e45c0d4c1860d3 Mon Sep 17 00:00:00 2001 From: Ansis Brammanis Date: Wed, 17 Apr 2019 12:06:12 -0400 Subject: [PATCH 4/5] optimize --- test/integration/image/1.png | Bin 11076 -> 689 bytes .../render-tests/canvas/update/expected.png | Bin 5358 -> 1461 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/integration/image/1.png b/test/integration/image/1.png index 2525b73d760ea18c71618a2b4d9859166dd6e014..d319b4de66ab20f5c4a5ec117fedec214f1addf8 100644 GIT binary patch delta 196 zcmX>Swvly$gc>6=0|Nu|&U>cv7h@-A}f&3SRCZ;#IWw1%*)Mt86Pv& zGjJAoL>4nJa0`PlBg3pY5+Kb1J|V95KN)YvLI fzW~Uj1XS?;w_y-uyt$xe56Bo#S3j3^P6>>S|f?5q$_l%JNF zlghxLF>&fdYwyDWBFF!)oZ56nTr9S^Sx;+eSHEk9@rnnFuQl<b@tK8CrVMPemU7)y1Zig>aFj?TSL!=F(^9aXq+kP@b6&f zmwEP4w(!WJWgXpeujibWOSjnndtQl`(m$1VS{hb=r8$J$eXkmHs&}MMU9(2$vZR}l zZ{6O`O8b4gme%w=%{_ea$kQ*gzMP-^*Rikc#aAZH^L;wb=dF@-q~;1eHgWTfF_>y- z_4!`&Ztd0o=CuARQr=e0<}UPCw@~zR<*!9G*FPVyx*BzpO)n_qIpd4J43p+MRIxdk{@DC_Q~9xEn{W%pE&F%o zrE+l0W!@Tm{qL^AySH@jJ{Q%Pd0+ZS`mvW+j>ZFHgR{URvY3H^TNs2H8D`Cq0LIPL z%#etZ2wxwolpi z<;HsXMd|v6mX?Eakt!T9!iATNWWfU~0o>yPhVJ6I(5 zM6%C)=l}f1YaaIo21X_p4gm!RFhfrKhunE}IbP0;y~xDRuvSj%s2R9o&y`^;B)?PGZ7hs77DgKj&^mIou`t?LfYp(s(-6?H zw$W*b(P;>1t7){cFxprcZ7hs77Dg8hjjpc(_oJz|6s=Ky_f|F+(HEZ2KnpBAUHx3v IIVCg!0NN}_&Hw-a diff --git a/test/integration/render-tests/canvas/update/expected.png b/test/integration/render-tests/canvas/update/expected.png index 1b1f2ab66e37b45e26c2184d2288779fe950d0f7..884d1a8612aa3c45f97de5d5096afe11be0e1425 100644 GIT binary patch literal 1461 zcmYjRe^gR;6o2qU5!BTDL5e48c@&L~x=?Id=uqGRnvb#qGYT`oG!iq@N?zhQTF$vL z3TmXu58df^=xnumYyEI-roG6_oeI~aA6qr2%dDgAoo#>YkMFtPd(Zv+xPRQ+usn_0P%3UJM#h_JeP}CWbifOWmCX5eQh@6oDg*%1 zS|KlOMdfhc!?ZFB$3JsDIb>lnkv~$TSsanUAAqTK=c;dvs4j*JnP$_`;rpRY6CVOCe_hVG)rzLvA#rk$G7o8W#Y!1-u?aj~~dmWlhD7!v2myx3rtENH$sf?6A2G(~( zrb*ucXiEjc=PcE65xp#3`p$!{YRKC<<1wFJp0j z?d3DX1d=&oPkm@hAmOtTuMWn}cDs%#s?QfjFnjxy%}l9x%MKms2kN;>+l;zG6NkAP#4> ze$=lw=$R3#qE=FP82mJNQqGOTUG0*_00CW2b|mxCB1$C&_XqFern9z*RV-o?5eLRw z6Pj~G@0crrY#Fw0Y$4b{+#`dtJ3TA0{S}bNw>M}&tO~BwFTw5KV!mAY59v3tiMo0j zED?sC-bZY5Sd8#&K}Y2EmRw}jX3*@g9EQVtJFIU4ni5^nIPN8r38b;QPH~EXY@}YM z77Iyab!WU)Lh_(2aKh7M$TgpJ&tCpQCqNoyU*+deIT&05sTpmCm{oaQToqJ>&m1Gg zK<};WFbvY54Jss2uQJtPnHkM_?IO-f&YrMB`3g4v>} z(P!aYrFJJyj6G~IiaT@H6t5XD^-mJAs!NsoQ;!7>;{<|DL^R7(UKaFfc=$e~}2Wxo#5wGoJ+DL-jhWIDrx| z;-Ynfm%;#Zx1PY4mpQD(3pJQ2o^i(g01*7=PX2Mz)+9jFcsu0=wOg+Y8mEm9(N=-~ z=Z?ZfiN$6XFdXQaP{O<$gsoQC*-BR{`kODuR zmT?$-MAx{{jeg=mZf3vcf>+{d?b9fe_tNyyH*;d5NENx-r}lFrTT@}smj~;N*M^d;ftqI8McWEuNTBk5ut--0UH14rXtl60l^;!< zz4xpV+Nk)5ySPrkNW zfLvHx4N+Q`MBckXNRB@9g-I^Orf1KBwZD;<;NT>i1uTTMN(jRH@7paNA+UBAbZhd^ z=dGlQKqbC8ip=<2o5c%HHbPa3d3fR^&==hJGx!tT!E39{u$N|;wRjKz86gqYZiP}& po_dj_bJmccua5Z_;rwOy+%?wMK21KSF5*`g5N2fYPNggM{0(kAVnP4_ literal 5358 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 Date: Wed, 17 Apr 2019 12:09:06 -0400 Subject: [PATCH 5/5] optimize --- .../render-tests/canvas/update/expected.png | Bin 1461 -> 567 bytes .../render-tests/canvas/update/style.json | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/integration/render-tests/canvas/update/expected.png b/test/integration/render-tests/canvas/update/expected.png index 884d1a8612aa3c45f97de5d5096afe11be0e1425..f042d98788be7ab72d1b89c131d31dc3ac157af3 100644 GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEpIl;uuoF`1Ihx+`|q$t_R&8 zFza-0-K;ZjhV7FC7C)ualXBml>k#i)v~yzLN5v!3E*D=)$UDr@>3Y_uF-uYQaqp4Y zt`~V;O5`i}iMVbK6gfMg@1xTrl|U0~kV<_ey8w_-p;2Lz#w=zRkV=L1&BZ@3Zc6!Ax#fhG{M|0swFxh_w>BVg@%F$U}c!w%U+8G3qMe#eh2x@5@q zae>CH&JNb4$u+|K9gAl6+|cMsV|poJe&o>+wm=hMkK;cab^QJ)g9Xbw>|HMU_~|If zJ{Er@9%#ZXFxmU~kLDdfS;0r`8nZl?B>!>N@w)>w$HnRxTToJGzq zI+Ak9P!4EYYiH+@WE&41KOZI8WcG~~hK(gXbAi?!U7Bp;7!zT2Z1RyuQ~H3;^|3m} zcw|DKq02=bw>uukC4l|}$~qpAeJKGn@5vGQONMP4v-l_W6)J3Wv;qd2;>JL$W59q> zdnv&#%%N)D literal 1461 zcmYjRe^gR;6o2qU5!BTDL5e48c@&L~x=?Id=uqGRnvb#qGYT`oG!iq@N?zhQTF$vL z3TmXu58df^=xnumYyEI-roG6_oeI~aA6qr2%dDgAoo#>YkMFtPd(Zv+xPRQ+usn_0P%3UJM#h_JeP}CWbifOWmCX5eQh@6oDg*%1 zS|KlOMdfhc!?ZFB$3JsDIb>lnkv~$TSsanUAAqTK=c;dvs4j*JnP$_`;rpRY6CVOCe_hVG)rzLvA#rk$G7o8W#Y!1-u?aj~~dmWlhD7!v2myx3rtENH$sf?6A2G(~( zrb*ucXiEjc=PcE65xp#3`p$!{YRKC<<1wFJp0j z?d3DX1d=&oPkm@hAmOtTuMWn}cDs%#s?QfjFnjxy%}l9x%MKms2kN;>+l;zG6NkAP#4> ze$=lw=$R3#qE=FP82mJNQqGOTUG0*_00CW2b|mxCB1$C&_XqFern9z*RV-o?5eLRw z6Pj~G@0crrY#Fw0Y$4b{+#`dtJ3TA0{S}bNw>M}&tO~BwFTw5KV!mAY59v3tiMo0j zED?sC-bZY5Sd8#&K}Y2EmRw}jX3*@g9EQVtJFIU4ni5^nIPN8r38b;QPH~EXY@}YM z77Iyab!WU)Lh_(2aKh7M$TgpJ&tCpQCqNoyU*+deIT&05sTpmCm{oaQToqJ>&m1Gg zK<};WFbvY54Jss2uQJtPnHkM_?IO-f&YrMB`3g4v>} z(P!aYrFJJyj6G~IiaT@H6t5XD^-mJAs!NsoQ;!7>;{<|DL^R7(UKaFfc=$e~}2Wxo#5wGoJ+DL-jhWIDrx| z;-Ynfm%;#Zx1PY4mpQD(3pJQ2o^i(g01*7=PX2Mz)+9jFcsu0=wOg+Y8mEm9(N=-~ z=Z?ZfiN$6XFdXQaP{O<$gsoQC*-BR{`kODuR zmT?$-MAx{{jeg=mZf3vcf>+{d?b9fe_tNyyH*;d5NENx-r}lFrTT@}smj~;N*M^d;ftqI8McWEuNTBk5ut--0UH14rXtl60l^;!< zz4xpV+Nk)5ySPrkNW zfLvHx4N+Q`MBckXNRB@9g-I^Orf1KBwZD;<;NT>i1uTTMN(jRH@7paNA+UBAbZhd^ z=dGlQKqbC8ip=<2o5c%HHbPa3d3fR^&==hJGx!tT!E39{u$N|;wRjKz86gqYZiP}& po_dj_bJmccua5Z_;rwOy+%?wMK21KSF5*`g5N2fYPNggM{0(kAVnP4_ diff --git a/test/integration/render-tests/canvas/update/style.json b/test/integration/render-tests/canvas/update/style.json index c7b5635f29f..680adeaff81 100644 --- a/test/integration/render-tests/canvas/update/style.json +++ b/test/integration/render-tests/canvas/update/style.json @@ -2,8 +2,8 @@ "version": 8, "metadata": { "test": { - "width": 512, - "height": 512, + "width": 64, + "height": 64, "addFakeCanvas": { "id": "fake-canvas", "image": "./image/0.png" @@ -18,7 +18,7 @@ -122.514426, 37.562984 ], - "zoom": 17, + "zoom": 14, "sources": { "canvas": { "type": "canvas",