diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-11-23 13:50:58 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-11-23 13:50:58 +0800 |
commit | 45726ffaf0e79e9d9421cb184be412df0997b319 (patch) | |
tree | 4d556c4286c9bcfaeb8c5111f0baac9ca19df982 /ui | |
parent | 28dc3faad2df6dd3eb6b9f7539e3f118ef94fe42 (diff) | |
download | ibus-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.py | 9 |
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: |