From e3721b85f40e5114e3fb34518c8a934a94bc2ac0 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Fri, 10 Apr 2015 12:31:07 +0000 Subject: [PATCH] #669: fix signal exit on osx, close the protocol early git-svn-id: https://xpra.org/svn/Xpra/trunk@8986 3bb7dfac-3a0b-4e04-842a-767bc560f471 --- src/xpra/net/subprocess_wrapper.py | 6 ++++++ src/xpra/sound/wrapper.py | 10 ++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/xpra/net/subprocess_wrapper.py b/src/xpra/net/subprocess_wrapper.py index 183eb21d69..533a60bf50 100644 --- a/src/xpra/net/subprocess_wrapper.py +++ b/src/xpra/net/subprocess_wrapper.py @@ -299,6 +299,10 @@ def cleanup(self): self.stop() def stop(self): + self.stop_process() + self.stop_protocol() + + def stop_process(self): log("stop() sending stop request to %s", self.description) proc = self.process if proc and proc.poll() is None: @@ -307,6 +311,8 @@ def stop(self): self.process = None except Exception as e: log.warn("failed to stop the wrapped subprocess %s: %s", proc, e) + + def stop_protocol(self): p = self.protocol if p: self.protocol = None diff --git a/src/xpra/sound/wrapper.py b/src/xpra/sound/wrapper.py index cdf1d7f2ec..dd7ceb26be 100644 --- a/src/xpra/sound/wrapper.py +++ b/src/xpra/sound/wrapper.py @@ -150,6 +150,7 @@ def __init__(self, description): #hook some default packet handlers: self.connect("state-changed", self.state_changed) self.connect("info", self.info_update) + self.connect("signal", self.subprocess_signal) def cleanup(self): @@ -159,7 +160,12 @@ def cleanup(self): gobject.timeout_add(500, self.stop) - def state_changed(self, sink, new_state): + def subprocess_signal(self, wrapper, proc): + log("subprocess_signal: %s", proc) + self.stop_protocol() + + + def state_changed(self, wrapper, new_state): self.state = new_state def get_state(self): @@ -169,7 +175,7 @@ def get_state(self): def get_info(self): return self.last_info - def info_update(self, sink, info): + def info_update(self, wrapper, info): log("info_update: %s", info) self.last_info = info self.last_info["time"] = int(time.time())