summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-11-23 13:50:58 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-11-23 13:50:58 +0800
commit45726ffaf0e79e9d9421cb184be412df0997b319 (patch)
tree4d556c4286c9bcfaeb8c5111f0baac9ca19df982 /ui
parent28dc3faad2df6dd3eb6b9f7539e3f118ef94fe42 (diff)
downloadibus-45726ffaf0e79e9d9421cb184be412df0997b319.tar.gz
ibus-45726ffaf0e79e9d9421cb184be412df0997b319.tar.xz
ibus-45726ffaf0e79e9d9421cb184be412df0997b319.zip
Handle SIGCHLD in ibus-ui-gtk to fix issue 191.
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/panel.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
index cb9353c..bb61890 100644
--- a/ui/gtk/panel.py
+++ b/ui/gtk/panel.py
@@ -26,6 +26,7 @@ import ibus
import icon as _icon
import os
import sys
+import signal
from os import path
from ibus import interface
from languagebar import LanguageBar
@@ -62,6 +63,9 @@ class Panel(ibus.PanelBase):
self.__ibus_icon = path.join(self.__icons_dir, "ibus.svg")
self.__setup_cmd = path.join(self.__prefix, "bin", "ibus-setup")
+ # hanlder signal
+ signal.signal(signal.SIGCHLD, self.__sigchld_cb)
+
# connect bus signal
self.__bus.connect("config-value-changed", self.__config_value_changed_cb)
self.__bus.connect("config-reloaded", self.__config_reloaded_cb)
@@ -365,6 +369,11 @@ class Panel(ibus.PanelBase):
self.__bus.kill()
else:
print >> sys.stderr, "Unknown command %s" % command
+
+ def __sigchld_cb(self, sig, sf):
+ pid = os.wait()
+ if self.__setup_pid == pid:
+ self.__setup_pid = 0
def __start_setup(self):
if self.__setup_pid != 0: