Start live worker in viewer process

Needed for live loading of AI backend modules
This commit is contained in:
Kovid Goyal 2025-09-02 21:58:01 +05:30
parent 31059991ef
commit 06b9c221e7
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 0 deletions

View File

@ -428,6 +428,8 @@ class Lookup(QTabWidget):
def _activate_llm_panel(self):
if self.llm_panel is None:
# Deferred import to avoid circular dependencies and improve startup time; import may be redundant
from calibre.live import start_worker
start_worker() # needed for live loading of AI backends
from calibre.gui2.viewer.llm import LLMPanel
self.llm_panel = LLMPanel(self, viewer=self.viewer, lookup_widget=self)

View File

@ -51,6 +51,7 @@ from calibre.gui2.viewer.search import SearchPanel
from calibre.gui2.viewer.toc import TOC, TOCSearch, TOCView
from calibre.gui2.viewer.toolbars import ActionsToolBar
from calibre.gui2.viewer.web_view import WebView, get_path_for_name, set_book_path
from calibre.live import async_stop_worker
from calibre.startup import connect_lambda
from calibre.utils.date import utcnow
from calibre.utils.img import image_from_path
@ -810,6 +811,7 @@ class EbookViewer(MainWindow):
self.web_view.prepare_for_close()
return
self.shutting_down = True
wait_for_worker = async_stop_worker()
self.search_widget.shutdown()
self.web_view.shutdown()
try:
@ -822,6 +824,7 @@ class EbookViewer(MainWindow):
except Exception:
import traceback
traceback.print_exc()
wait_for_worker()
self.shutdown_done = True
return MainWindow.closeEvent(self, ev)
# }}}