From 18805c4c689dc9f09d0028ac46669a4674752f7b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 30 Oct 2012 22:41:15 +0530 Subject: [PATCH] Dont scan font files in worker processes --- src/calibre/constants.py | 1 + src/calibre/utils/fonts/scanner.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 953749c92b..4ae0005b0d 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -36,6 +36,7 @@ isunix = isosx or islinux isportable = os.environ.get('CALIBRE_PORTABLE_BUILD', None) is not None ispy3 = sys.version_info.major > 2 isxp = iswindows and sys.getwindowsversion().major < 6 +isworker = os.environ.has_key('CALIBRE_WORKER') or os.environ.has_key('CALIBRE_SIMPLE_WORKER') try: preferred_encoding = locale.getpreferredencoding() diff --git a/src/calibre/utils/fonts/scanner.py b/src/calibre/utils/fonts/scanner.py index e90448726d..f3bfd027cf 100644 --- a/src/calibre/utils/fonts/scanner.py +++ b/src/calibre/utils/fonts/scanner.py @@ -12,7 +12,8 @@ from collections import defaultdict from threading import Thread from calibre import walk, prints, as_unicode -from calibre.constants import config_dir, iswindows, isosx, plugins, DEBUG +from calibre.constants import (config_dir, iswindows, isosx, plugins, DEBUG, + isworker) from calibre.utils.fonts.metadata import FontMetadata, UnsupportedFont from calibre.utils.fonts.utils import panose_to_css_generic_family from calibre.utils.icu import sort_key @@ -150,7 +151,8 @@ class Scanner(Thread): if not hasattr(self, 'cache'): from calibre.utils.config import JSONConfig self.cache = JSONConfig('fonts/scanner_cache') - self.cache.refresh() + else: + self.cache.refresh() if self.cache.get('version', None) != self.CACHE_VERSION: self.cache.clear() self.cached_fonts = self.cache.get('fonts', {}) @@ -162,6 +164,10 @@ class Scanner(Thread): self.reload_cache() num = 0 for folder in self.folders: + if isworker: + # Dont scan font files in worker processes, use whatever is + # cached. + continue if not os.path.isdir(folder): continue try: