@@ -319,19 +319,29 @@ async function rendreSortie() {
319319
320320 const code = entierSecurise ( METHODES [ state . method ] , METHODES . hex , 0 ) ;
321321 let cote = entierSecurise ( state . side , 30 , 1 ) ;
322+ const coteDemande = cote ;
322323 const coteMin = coteSuretePourImage ( w , h , state . method ) ;
323- if ( cote < coteMin ) {
324- cote = coteMin ;
324+ if ( cote < coteMin ) cote = coteMin ;
325+ let nTuiles ;
326+ for ( let tentative = 0 ; tentative < 6 ; tentative ++ ) {
327+ try {
328+ nTuiles = Number ( wasm . generer_tuiles ( w , h , cote , code ) ) ;
329+ break ;
330+ } catch ( err ) {
331+ if ( tentative >= 5 ) throw err ;
332+ cote = Math . ceil ( cote * 1.5 ) ;
333+ }
334+ }
335+ if ( cote !== coteDemande ) {
336+ status . textContent = `Taille ajustee a ${ cote } px (limite memoire WASM).` ;
337+ }
338+ if ( cote !== state . side ) {
325339 state . side = cote ;
326340 const tileSizeEl = document . getElementById ( "tile-size" ) ;
327341 if ( tileSizeEl ) tileSizeEl . value = String ( cote ) ;
328342 const tileSizeDisp = document . getElementById ( "tile-size-display" ) ;
329343 if ( tileSizeDisp ) tileSizeDisp . textContent = String ( cote ) ;
330- status . textContent = `Taille ajustee a ${ cote } px (limite memoire WASM).` ;
331- } else if ( cote !== state . side ) {
332- state . side = cote ;
333344 }
334- const nTuiles = Number ( wasm . generer_tuiles ( w , h , cote , code ) ) ;
335345 if ( ! Number . isInteger ( nTuiles ) || nTuiles < 0 ) {
336346 throw new Error ( `Nombre de tuiles invalide renvoye par WASM: ${ nTuiles } ` ) ;
337347 }
0 commit comments