Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion blacs/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,9 @@ def on_save_exit(self):
self.front_panel_settings.save_front_panel_to_h5(self.settings_path,data[0],data[1],data[2],data[3],{"overwrite":True},force_new_conn_table=True)
logger.info('Shutting down workers')
for tab in self.tablist.values():
tab.shutdown_workers()
# Tell tab to shutdown its workers if it has a method to do so.
if hasattr(tab, 'shutdown_workers'):
tab.shutdown_workers()

QTimer.singleShot(100, self.finalise_quit)

Expand All @@ -616,6 +618,14 @@ def finalise_quit(self, deadline=None, pending_threads=None):
overdue = time.time() > deadline
# Check for worker shutdown completion:
for name, tab in list(self.tablist.items()):
# Immediately close tabs that don't support finalise_close_tab()
if not hasattr(tab, 'finalise_close_tab'):
try:
current_page = tab.close_tab(finalise=False)
except Exception as e:
logger.error('Couldn\'t close tab:\n%s' % str(e))
del self.tablist[name]
continue
fatal_error = tab.state == 'fatal error'
if not tab.shutdown_workers_complete and overdue or fatal_error:
# Give up on cleanly shutting down this tab's worker processes:
Expand Down