mirror of
https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
synced 2025-12-24 20:10:23 -08:00
Add button to skip the current iteration
This commit is contained in:
@@ -32,6 +32,10 @@ def process_batch(p, input_dir, output_dir, args):
|
||||
|
||||
for i, image in enumerate(images):
|
||||
state.job = f"{i+1} out of {len(images)}"
|
||||
if state.skipped:
|
||||
state.skipped = False
|
||||
state.interrupted = False
|
||||
continue
|
||||
|
||||
if state.interrupted:
|
||||
break
|
||||
|
||||
@@ -355,6 +355,10 @@ def process_images(p: StableDiffusionProcessing) -> Processed:
|
||||
state.job_count = p.n_iter
|
||||
|
||||
for n in range(p.n_iter):
|
||||
if state.skipped:
|
||||
state.skipped = False
|
||||
state.interrupted = False
|
||||
|
||||
if state.interrupted:
|
||||
break
|
||||
|
||||
|
||||
@@ -84,6 +84,7 @@ def selected_hypernetwork():
|
||||
|
||||
|
||||
class State:
|
||||
skipped = False
|
||||
interrupted = False
|
||||
job = ""
|
||||
job_no = 0
|
||||
@@ -96,6 +97,10 @@ class State:
|
||||
current_image_sampling_step = 0
|
||||
textinfo = None
|
||||
|
||||
def skip(self):
|
||||
self.skipped = True
|
||||
self.interrupted = True
|
||||
|
||||
def interrupt(self):
|
||||
self.interrupted = True
|
||||
|
||||
|
||||
@@ -191,6 +191,7 @@ def wrap_gradio_call(func, extra_outputs=None):
|
||||
# last item is always HTML
|
||||
res[-1] += f"<div class='performance'><p class='time'>Time taken: <wbr>{elapsed_text}</p>{vram_html}</div>"
|
||||
|
||||
shared.state.skipped = False
|
||||
shared.state.interrupted = False
|
||||
shared.state.job_count = 0
|
||||
|
||||
@@ -411,9 +412,16 @@ def create_toprow(is_img2img):
|
||||
|
||||
with gr.Column(scale=1):
|
||||
with gr.Row():
|
||||
skip = gr.Button('Skip', elem_id=f"{id_part}_skip")
|
||||
interrupt = gr.Button('Interrupt', elem_id=f"{id_part}_interrupt")
|
||||
submit = gr.Button('Generate', elem_id=f"{id_part}_generate", variant='primary')
|
||||
|
||||
skip.click(
|
||||
fn=lambda: shared.state.skip(),
|
||||
inputs=[],
|
||||
outputs=[],
|
||||
)
|
||||
|
||||
interrupt.click(
|
||||
fn=lambda: shared.state.interrupt(),
|
||||
inputs=[],
|
||||
|
||||
Reference in New Issue
Block a user