aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2022-11-07 23:05:56 +0000
committerBen Harris <bjh21@bjh21.me.uk>2022-11-08 00:57:32 +0000
commitfba22f04d684dfb14d1f74c12ba71dd0b2f7be32 (patch)
treebf018e1fb6d94326f0933f77d002dd51221ab450
parent289342ec338e0eeb2213d0a4cf93531c31bff1ce (diff)
downloadpuzzles-fba22f04d684dfb14d1f74c12ba71dd0b2f7be32.zip
puzzles-fba22f04d684dfb14d1f74c12ba71dd0b2f7be32.tar.gz
puzzles-fba22f04d684dfb14d1f74c12ba71dd0b2f7be32.tar.bz2
puzzles-fba22f04d684dfb14d1f74c12ba71dd0b2f7be32.tar.xz
js: Make update_pixel_ratio() more robust
With very small tile sizes, js_canvas_find_font_midpoint() can throw an exception. When it was called from update_pixel_ratio(), this prevented the new MediaQueryList from being created, which meant that the puzzle stopped noticing changes of device pixel ratio. Now update_pixel_ratio() establishes a new MediaQueryList before calling rescale_puzzle(), so the exception can't break it. Catching the exception properly would be even better, of course.
-rw-r--r--emccpre.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/emccpre.js b/emccpre.js
index e91a215..6af3350 100644
--- a/emccpre.js
+++ b/emccpre.js
@@ -547,9 +547,9 @@ function initPuzzle() {
var dpr = window.devicePixelRatio;
if (mql !== null)
mql.removeListener(update_pixel_ratio);
- rescale_puzzle(nominal_width * dpr, nominal_height * dpr);
mql = window.matchMedia(`(resolution: ${dpr}dppx)`);
mql.addListener(update_pixel_ratio);
+ rescale_puzzle(nominal_width * dpr, nominal_height * dpr);
}
Module.onRuntimeInitialized = function() {