aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2022-12-02 23:55:28 +0000
committerBen Harris <bjh21@bjh21.me.uk>2022-12-03 15:46:58 +0000
commitd3ef8e65dccb76c4a62d7c4f8f38c9fa3dd9b188 (patch)
tree3ee05dc8d782353ed6c1862acb36b83f65331fba
parentf0d47053640c18d99252a57466272f53fbabac25 (diff)
downloadpuzzles-d3ef8e65dccb76c4a62d7c4f8f38c9fa3dd9b188.zip
puzzles-d3ef8e65dccb76c4a62d7c4f8f38c9fa3dd9b188.tar.gz
puzzles-d3ef8e65dccb76c4a62d7c4f8f38c9fa3dd9b188.tar.bz2
puzzles-d3ef8e65dccb76c4a62d7c4f8f38c9fa3dd9b188.tar.xz
js: Simplify drawing context management
There's not much point in re-requesting the drawing context from the offscreen canvas at the start of each drawing operation. The canvas keeps the context around and returns it on every call to getContext(), so we may as well just keep our reference to it too. This does mean that the front-end won't detect puzzles drawing outside of a redraw operation, but I think it's the mid-end's job to assert things like that. Rumours that I'm doing this because I had a mysterious bug whereby ctx was unexpectedly null are entirely true.
-rw-r--r--emcclib.js2
-rw-r--r--emccpre.js3
2 files changed, 2 insertions, 3 deletions
diff --git a/emcclib.js b/emcclib.js
index 1be8979..3824293 100644
--- a/emcclib.js
+++ b/emcclib.js
@@ -224,7 +224,6 @@ mergeInto(LibraryManager.library, {
* Prepare to do some drawing on the canvas.
*/
js_canvas_start_draw: function() {
- ctx = offscreen_canvas.getContext('2d', { alpha: false });
update_xmin = update_xmax = update_ymin = update_ymax = undefined;
},
@@ -267,7 +266,6 @@ mergeInto(LibraryManager.library, {
update_xmax - update_xmin,
update_ymax - update_ymin);
}
- ctx = null;
},
/*
diff --git a/emccpre.js b/emccpre.js
index bba40bc..6fba9b2 100644
--- a/emccpre.js
+++ b/emccpre.js
@@ -22,7 +22,7 @@
var onscreen_canvas, offscreen_canvas;
// A persistent drawing context for the offscreen canvas, to save
-// constructing one per individual graphics operation.
+// requesting it for each individual graphics operation.
var ctx;
// Bounding rectangle for the copy to the onscreen canvas that will be
@@ -245,6 +245,7 @@ function initPuzzle() {
// Construct the off-screen canvas used for double buffering.
onscreen_canvas = document.getElementById("puzzlecanvas");
offscreen_canvas = document.createElement("canvas");
+ ctx = offscreen_canvas.getContext('2d', { alpha: false });
// Stop right-clicks on the puzzle from popping up a context menu.
// We need those right-clicks!