Skip to content

Commit 118876e

Browse files
Use finally to reset mainloop ownership
skip running mainloop if we already own one do cheaper test first
1 parent e7af5c9 commit 118876e

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lib/matplotlib/backends/_backend_tk.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ def destroy(self, *args):
460460

461461
self.window.destroy()
462462

463-
if not Gcf.get_num_fig_managers() and self._owns_mainloop:
463+
if self._owns_mainloop and not Gcf.get_num_fig_managers():
464464
self.window.quit()
465465

466466
def get_window_title(self):
@@ -884,6 +884,10 @@ def mainloop():
884884
if managers:
885885
first_manager = managers[0]
886886
manager_class = type(first_manager)
887+
if manager_class._owns_mainloop:
888+
return
887889
manager_class._owns_mainloop = True
888-
first_manager.window.mainloop()
889-
manager_class._owns_mainloop = False
890+
try:
891+
first_manager.window.mainloop()
892+
finally:
893+
manager_class._owns_mainloop = False

0 commit comments

Comments
 (0)