Index: remoting/host/linux/linux_me2me_host.py |
diff --git a/remoting/host/linux/linux_me2me_host.py b/remoting/host/linux/linux_me2me_host.py |
index ead7be215dda3d7d9cc71508b3cfa2789a8b11ca..d981ce7aa5ab78a48f6b5681bedda616087e0339 100755 |
--- a/remoting/host/linux/linux_me2me_host.py |
+++ b/remoting/host/linux/linux_me2me_host.py |
@@ -131,7 +131,7 @@ MAX_LAUNCH_FAILURES = SHORT_BACKOFF_THRESHOLD + 10 |
SESSION_OUTPUT_TIME_LIMIT_SECONDS = 30 |
# Globals needed by the atexit cleanup() handler. |
-g_desktops = [] |
+g_desktop = None |
g_host_hash = hashlib.md5(socket.gethostname()).hexdigest() |
def gen_xorg_config(sizes): |
@@ -408,7 +408,9 @@ class Desktop: |
self.randr_add_sizes = False |
self.host_ready = False |
self.ssh_auth_sockname = None |
- g_desktops.append(self) |
+ global g_desktop |
+ assert(g_desktop is None) |
+ g_desktop = self |
@staticmethod |
def get_unused_display_number(): |
@@ -751,8 +753,8 @@ class Desktop: |
_ = signum, frame |
logging.info("Host ready to receive connections.") |
self.host_ready = True |
- if (ParentProcessLogger.instance() and |
- False not in [desktop.host_ready for desktop in g_desktops]): |
+ if (ParentProcessLogger.instance() and g_desktop is not None and |
+ g_desktop.host_ready): |
ParentProcessLogger.instance().release_parent(True) |
signal.signal(signal.SIGUSR1, sigusr1_handler) |
@@ -1063,11 +1065,11 @@ def daemonize(): |
def cleanup(): |
logging.info("Cleanup.") |
- global g_desktops |
- for desktop in g_desktops: |
- for proc, name in [(desktop.x_proc, "X server"), |
- (desktop.session_proc, "session"), |
- (desktop.host_proc, "host")]: |
+ global g_desktop |
+ if g_desktop is not None: |
+ for proc, name in [(g_desktop.x_proc, "X server"), |
+ (g_desktop.session_proc, "session"), |
+ (g_desktop.host_proc, "host")]: |
if proc is not None: |
logging.info("Terminating " + name) |
try: |
@@ -1082,10 +1084,10 @@ def cleanup(): |
psutil_proc.kill() |
except psutil.Error: |
logging.error("Error terminating process") |
- if desktop.xorg_conf is not None: |
- os.remove(desktop.xorg_conf) |
+ if g_desktop.xorg_conf is not None: |
+ os.remove(g_desktop.xorg_conf) |
- g_desktops = [] |
+ g_desktop = None |
if ParentProcessLogger.instance(): |
ParentProcessLogger.instance().release_parent(False) |
@@ -1104,9 +1106,8 @@ class SignalHandler: |
self.host_config.load() |
except (IOError, ValueError) as e: |
logging.error("Failed to load config: " + str(e)) |
- for desktop in g_desktops: |
- if desktop.host_proc: |
- desktop.host_proc.send_signal(signal.SIGTERM) |
+ if g_desktop is not None and g_desktop.host_proc: |
+ g_desktop.host_proc.send_signal(signal.SIGTERM) |
else: |
# Exit cleanly so the atexit handler, cleanup(), gets called. |
raise SystemExit |