use state instead of global for default_image (#812)

* use state instead of global for default_image

solves issue https://github.com/lllyasviel/Fooocus/issues/716

* fix

---------

Co-authored-by: lllyasviel <lyuminzhang@outlook.com>
This commit is contained in:
Manuel Schmid 2023-10-29 17:31:14 +01:00 committed by GitHub
parent 759bfadefa
commit 49b94fa26e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 23 deletions

View File

@ -1 +1 @@
version = '2.1.757'
version = '2.1.758'

View File

@ -172,31 +172,18 @@ with shared.gradio_root:
input_image_checkbox.change(lambda x: gr.update(visible=x), inputs=input_image_checkbox, outputs=image_input_panel, queue=False, _js=switch_js)
ip_advanced.change(lambda: None, queue=False, _js=down_js)
current_tab = gr.Textbox(value='uov', visible=False)
current_tab = gr.State(value='uov')
default_image = gr.State(value=None)
default_image = None
lambda_img = lambda x: x['image'] if isinstance(x, dict) else x
uov_input_image.upload(lambda_img, inputs=uov_input_image, outputs=default_image, queue=False)
inpaint_input_image.upload(lambda_img, inputs=inpaint_input_image, outputs=default_image, queue=False)
def update_default_image(x):
global default_image
if isinstance(x, dict):
default_image = x['image']
else:
default_image = x
return
uov_input_image.clear(lambda: None, outputs=default_image, queue=False)
inpaint_input_image.clear(lambda: None, outputs=default_image, queue=False)
def clear_default_image():
global default_image
default_image = None
return
uov_input_image.upload(update_default_image, inputs=uov_input_image, queue=False)
inpaint_input_image.upload(update_default_image, inputs=inpaint_input_image, queue=False)
uov_input_image.clear(clear_default_image, queue=False)
inpaint_input_image.clear(clear_default_image, queue=False)
uov_tab.select(lambda: ['uov', default_image], outputs=[current_tab, uov_input_image], queue=False, _js=down_js)
inpaint_tab.select(lambda: ['inpaint', default_image], outputs=[current_tab, inpaint_input_image], queue=False, _js=down_js)
uov_tab.select(lambda x: ['uov', x], inputs=default_image, outputs=[current_tab, uov_input_image], queue=False, _js=down_js)
inpaint_tab.select(lambda x: ['inpaint', x], inputs=default_image, outputs=[current_tab, inpaint_input_image], queue=False, _js=down_js)
ip_tab.select(lambda: 'ip', outputs=[current_tab], queue=False, _js=down_js)
with gr.Column(scale=1, visible=modules.path.default_advanced_checkbox) as advanced_column: