Comments
Patch
@@ -423,7 +423,10 @@
return rc
-def gui():
+_is_gui = None
+
+
+def _gui():
'''Are we running in a GUI?'''
if pycompat.isdarwin:
if b'SSH_CONNECTION' in encoding.environ:
@@ -439,6 +442,13 @@
return pycompat.iswindows or encoding.environ.get(b"DISPLAY")
+def gui():
+ global _is_gui
+ if _is_gui is None:
+ _is_gui = _gui()
+ return _is_gui
+
+
def hgcmd():
"""Return the command used to execute current hg
@@ -583,6 +593,11 @@
`Subprocess.wait` function for the spawned process. This is mostly
useful for developers that need to make sure the spawned process
finished before a certain point. (eg: writing test)'''
+ if pycompat.isdarwin:
+ # avoid crash in CoreFoundation in case another thread
+ # calls gui() while we're calling fork().
+ gui()
+
# double-fork to completely detach from the parent process
# based on http://code.activestate.com/recipes/278731
if record_wait is None: