diff --git a/src/lib/WebVM.svelte b/src/lib/WebVM.svelte index 1c0a7d9..cdbd81d 100644 --- a/src/lib/WebVM.svelte +++ b/src/lib/WebVM.svelte @@ -352,11 +352,11 @@ } return null; } - async function yieldHelper() + async function yieldHelper(timeout) { return new Promise(function(f2, r2) { - setTimeout(f2, 0); + setTimeout(f2, timeout); }); } async function kmsSendChar(textArea, charStr) @@ -366,7 +366,7 @@ textArea.dispatchEvent(ke); var ke = new KeyboardEvent("keyup"); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); } async function handleTool(tool) { @@ -412,6 +412,8 @@ { case "screenshot": { + // Insert a 3 seconds delay unconditionally, the reference implementation uses 2 + await yieldHelper(3000); var delayCount = 0; var display = document.getElementById("display"); var dc = get(displayConfig); @@ -439,7 +441,7 @@ console.warn("Identical screenshot, rate limiting"); delayCount++; // Wait some time and retry - await new Promise(function(f, r) { setTimeout(f, 5000); }); + await yieldHelper(5000); continue; } } @@ -514,7 +516,7 @@ key = key.substr("shift+".length); var ke = new KeyboardEvent("keydown", {keyCode: 0x10}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); continue; } else if(key.startsWith("ctrl+")) @@ -523,7 +525,7 @@ key = key.substr("ctrl+".length); var ke = new KeyboardEvent("keydown", {keyCode: 0x11}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); continue; } else if(key.startsWith("alt+")) @@ -532,7 +534,7 @@ key = key.substr("alt+".length); var ke = new KeyboardEvent("keydown", {keyCode: 0x12}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); continue; } break; @@ -559,19 +561,19 @@ { var ke = new KeyboardEvent("keyup", {keyCode: 0x10}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); } if(isCtrl) { var ke = new KeyboardEvent("keyup", {keyCode: 0x11}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); } if(isAlt) { var ke = new KeyboardEvent("keyup", {keyCode: 0x12}); textArea.dispatchEvent(ke); - await yieldHelper(); + await yieldHelper(0); } return ret; }