|
11 | 11 | ''' |
12 | 12 | from __future__ import print_function, division, unicode_literals, absolute_import |
13 | 13 | import os |
14 | | -import shutil |
15 | 14 | import errno |
16 | | -from warnings import warn |
| 15 | +import atexit |
17 | 16 | from io import StringIO |
18 | 17 | from distutils.version import LooseVersion |
19 | 18 | from simplejson import load, dump |
20 | 19 | import numpy as np |
21 | 20 |
|
22 | 21 | from builtins import str, object, open |
23 | | -from future import standard_library |
24 | | -standard_library.install_aliases() |
25 | | - |
26 | | -import configparser |
27 | 22 | from ..external import portalocker |
| 23 | +import configparser |
28 | 24 |
|
| 25 | +from future import standard_library |
| 26 | +standard_library.install_aliases() |
29 | 27 |
|
30 | 28 | NUMPY_MMAP = LooseVersion(np.__version__) >= LooseVersion('1.12.0') |
31 | 29 |
|
@@ -194,6 +192,7 @@ def get_display(self): |
194 | 192 | sysdisplay = sysdisplay or os.getenv('DISPLAY') |
195 | 193 | if sysdisplay: |
196 | 194 | from collections import namedtuple |
| 195 | + |
197 | 196 | def _mock(): |
198 | 197 | pass |
199 | 198 |
|
@@ -222,3 +221,16 @@ def _mock(): |
222 | 221 |
|
223 | 222 | if hasattr(self._display, 'new_display'): |
224 | 223 | return ':%d' % self._display.new_display |
| 224 | + |
| 225 | + def stop_display(self): |
| 226 | + """Closes the display if started""" |
| 227 | + if self._display is not None: |
| 228 | + self._display.stop() |
| 229 | + |
| 230 | + |
| 231 | +@atexit.register |
| 232 | +def free_display(): |
| 233 | + from nipype import config |
| 234 | + from nipype import logging |
| 235 | + config.stop_display() |
| 236 | + logging.getLogger('interface').info('Closing display (if virtual)') |
0 commit comments