From 1f8f3a6e8bdbc687bc449aa3ce39bf4bb668f6f1 Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 16:50:00 -0700 Subject: [PATCH 1/3] feat: prevent screen sleep during generation --- javascript/progressbar.js | 25 +++++++++++++++++++++++++ modules/shared_options.py | 1 + 2 files changed, 26 insertions(+) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index f068bac6a..00b0429bb 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -76,6 +76,28 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var dateStart = new Date(); var wasEverActive = false; var parentProgressbar = progressbarContainer.parentNode; + var wakeLock = null; + + var requestWakeLock = async function() { + if (!opts.prevent_screen_sleep_during_generation) return; + try { + wakeLock = await navigator.wakeLock.request('screen'); + console.log('Wake Lock is active.'); + } catch (err) { + console.log('Wake Lock is not supported.'); + } + }; + + var releaseWakeLock = async function() { + if (!opts.prevent_screen_sleep_during_generation || !wakeLock) return; + try { + await wakeLock.release(); + console.log('Wake Lock is released.'); + wakeLock = null; + } catch (err) { + console.error('Wake Lock release failed', err); + } + }; var divProgress = document.createElement('div'); divProgress.className = 'progressDiv'; @@ -89,6 +111,7 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var livePreview = null; var removeProgressBar = function() { + releaseWakeLock(); if (!divProgress) return; setTitle(""); @@ -100,6 +123,8 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre }; var funProgress = function(id_task) { + // Request the wake lock at the start of the progress + requestWakeLock(); request("./internal/progress", {id_task: id_task, live_preview: false}, function(res) { if (res.completed) { removeProgressBar(); diff --git a/modules/shared_options.py b/modules/shared_options.py index 326a317e0..3741cf1f5 100644 --- a/modules/shared_options.py +++ b/modules/shared_options.py @@ -359,6 +359,7 @@ options_templates.update(options_section(('ui', "Live previews", "ui"), { "live_preview_refresh_period": OptionInfo(1000, "Progressbar and preview update period").info("in milliseconds"), "live_preview_fast_interrupt": OptionInfo(False, "Return image with chosen live preview method on interrupt").info("makes interrupts faster"), "js_live_preview_in_modal_lightbox": OptionInfo(False, "Show Live preview in full page image viewer"), + "prevent_screen_sleep_during_generation": OptionInfo(True, "Prevent screen sleep during generation"), })) options_templates.update(options_section(('sampler-params', "Sampler parameters", "sd"), { From c803e11505cae54c7e8e467cd773b2053c2bfc38 Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 18:14:32 -0700 Subject: [PATCH 2/3] fix: prevent create multiple wake lock --- javascript/progressbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 00b0429bb..751fc096c 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -79,7 +79,7 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre var wakeLock = null; var requestWakeLock = async function() { - if (!opts.prevent_screen_sleep_during_generation) return; + if (!opts.prevent_screen_sleep_during_generation || wakeLock) return; try { wakeLock = await navigator.wakeLock.request('screen'); console.log('Wake Lock is active.'); From f1e0bfebfc9418f14f36ea255162ed1eaba3a62f Mon Sep 17 00:00:00 2001 From: YSH Date: Tue, 11 Jun 2024 22:33:11 -0700 Subject: [PATCH 3/3] ci: remove comments and console logs --- javascript/progressbar.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 751fc096c..23dea64ce 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -82,9 +82,8 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre if (!opts.prevent_screen_sleep_during_generation || wakeLock) return; try { wakeLock = await navigator.wakeLock.request('screen'); - console.log('Wake Lock is active.'); } catch (err) { - console.log('Wake Lock is not supported.'); + console.error('Wake Lock is not supported.'); } }; @@ -92,7 +91,6 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre if (!opts.prevent_screen_sleep_during_generation || !wakeLock) return; try { await wakeLock.release(); - console.log('Wake Lock is released.'); wakeLock = null; } catch (err) { console.error('Wake Lock release failed', err); @@ -123,7 +121,6 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre }; var funProgress = function(id_task) { - // Request the wake lock at the start of the progress requestWakeLock(); request("./internal/progress", {id_task: id_task, live_preview: false}, function(res) { if (res.completed) {