diff --git a/src/calibre/gui2/splash.py b/src/calibre/gui2/splash.py index d2f2f48666..a8777b66d4 100644 --- a/src/calibre/gui2/splash.py +++ b/src/calibre/gui2/splash.py @@ -13,7 +13,7 @@ from functools import partial from PyQt5.Qt import QApplication, QSplashScreen, pyqtSignal, QBrush, QColor, Qt, QPixmap -from calibre.constants import iswindows, isosx +from calibre.constants import isosx, DEBUG from calibre.utils.ipc import eintr_retry_call class SplashScreen(Thread): @@ -36,13 +36,12 @@ class SplashScreen(Thread): self.hide = partial(self._rpc, 'hide') def launch_process(self, debug_executable): - kwargs = {'stdin':subprocess.PIPE} - if iswindows: - import win32process - kwargs['creationflags'] = win32process.CREATE_NO_WINDOW - kwargs['stdout'] = open(os.devnull, 'wb') - kwargs['stderr'] = subprocess.STDOUT - self.process = subprocess.Popen([debug_executable, '-c', 'from calibre.gui2.splash import main; main()'], **kwargs) + from calibre.utils.ipc.simple_worker import start_pipe_worker + if DEBUG: + args = {'stdout':None, 'stderr': None} + else: + args = {'stdout':open(os.devnull, 'wb'), 'stderr':subprocess.STDOUT} + self.process = start_pipe_worker('from calibre.gui2.splash import main; main()', **args) def _rpc(self, name, *args): self.queue.put(('_' + name, args))