diff --git a/src/calibre/db/cache.py b/src/calibre/db/cache.py index 30f0045c78..e3b02309f4 100644 --- a/src/calibre/db/cache.py +++ b/src/calibre/db/cache.py @@ -21,7 +21,7 @@ from queue import Queue from threading import Lock from time import sleep, time -from calibre import as_unicode, isbytestring +from calibre import as_unicode, isbytestring, detect_ncpus from calibre.constants import iswindows, preferred_encoding from calibre.customize.ui import ( run_plugins_on_import, run_plugins_on_postadd, run_plugins_on_postimport @@ -592,6 +592,15 @@ class Cache: self.queue_next_fts_job() return existing + @api + def set_fts_speed(self, slow=True): + if slow: + self.fts_indexing_sleep_time = Cache.fts_indexing_sleep_time + self.set_fts_num_of_workers(1) + else: + self.fts_indexing_sleep_time = 0.1 + self.set_fts_num_of_workers(max(1, detect_ncpus())) + @read_api def fts_search( self, diff --git a/src/calibre/gui2/fts/scan.py b/src/calibre/gui2/fts/scan.py index 30f16ea721..c53a504376 100644 --- a/src/calibre/gui2/fts/scan.py +++ b/src/calibre/gui2/fts/scan.py @@ -8,8 +8,6 @@ from qt.core import ( QRadioButton, QVBoxLayout, QWidget, pyqtSignal ) -from calibre import detect_ncpus -from calibre.db.cache import Cache from calibre.db.listeners import EventType from calibre.db.utils import IndexingProgress from calibre.gui2.dialogs.confirm_delete import confirm @@ -71,12 +69,7 @@ class ScanProgress(QWidget): def change_speed(self): db = get_db() - if self.fast_button.isChecked(): - db.fts_indexing_sleep_time = 0.1 - db.set_fts_num_of_workers(max(1, detect_ncpus())) - else: - db.fts_indexing_sleep_time = Cache.fts_indexing_sleep_time - db.set_fts_num_of_workers(1) + db.set_fts_speed(slow=not self.fast_button.isChecked()) self.indexing_progress.clear_rate_information() def update(self, complete, left, total):