shithub: puzzles

Download patch

ref: fba22f04d684dfb14d1f74c12ba71dd0b2f7be32
parent: 289342ec338e0eeb2213d0a4cf93531c31bff1ce
author: Ben Harris <[email protected]>
date: Mon Nov 7 18:05:56 EST 2022

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.

--- a/emccpre.js
+++ b/emccpre.js
@@ -547,9 +547,9 @@
         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() {