Dont scan font files in worker processes

This commit is contained in:
Kovid Goyal 2012-10-30 22:41:15 +05:30
parent 8cf35971ae
commit 18805c4c68
2 changed files with 9 additions and 2 deletions

View File

@ -36,6 +36,7 @@ isunix = isosx or islinux
isportable = os.environ.get('CALIBRE_PORTABLE_BUILD', None) is not None isportable = os.environ.get('CALIBRE_PORTABLE_BUILD', None) is not None
ispy3 = sys.version_info.major > 2 ispy3 = sys.version_info.major > 2
isxp = iswindows and sys.getwindowsversion().major < 6 isxp = iswindows and sys.getwindowsversion().major < 6
isworker = os.environ.has_key('CALIBRE_WORKER') or os.environ.has_key('CALIBRE_SIMPLE_WORKER')
try: try:
preferred_encoding = locale.getpreferredencoding() preferred_encoding = locale.getpreferredencoding()

View File

@ -12,7 +12,8 @@ from collections import defaultdict
from threading import Thread from threading import Thread
from calibre import walk, prints, as_unicode 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.metadata import FontMetadata, UnsupportedFont
from calibre.utils.fonts.utils import panose_to_css_generic_family from calibre.utils.fonts.utils import panose_to_css_generic_family
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
@ -150,6 +151,7 @@ class Scanner(Thread):
if not hasattr(self, 'cache'): if not hasattr(self, 'cache'):
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
self.cache = JSONConfig('fonts/scanner_cache') self.cache = JSONConfig('fonts/scanner_cache')
else:
self.cache.refresh() self.cache.refresh()
if self.cache.get('version', None) != self.CACHE_VERSION: if self.cache.get('version', None) != self.CACHE_VERSION:
self.cache.clear() self.cache.clear()
@ -162,6 +164,10 @@ class Scanner(Thread):
self.reload_cache() self.reload_cache()
num = 0 num = 0
for folder in self.folders: 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): if not os.path.isdir(folder):
continue continue
try: try: