summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Peng <shawn.p.huang@gmail.com>2008-10-03 23:58:31 +0800
committerHuang Peng <shawn.p.huang@gmail.com>2008-10-03 23:58:31 +0800
commitca93a90da1f2ea506f36e4ada7bd2b300e4d41e2 (patch)
tree58e2c90160db75042a64b51da6bad3838ed57a83
parent0d2c788dfdd7a00f1ca2310a846357f485aa2432 (diff)
downloadibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.tar.gz
ibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.tar.xz
ibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.zip
WIP.
-rw-r--r--ibus/bus.py1
-rw-r--r--launcher/ibus.in13
2 files changed, 10 insertions, 4 deletions
diff --git a/ibus/bus.py b/ibus/bus.py
index 9ac7b20..b189257 100644
--- a/ibus/bus.py
+++ b/ibus/bus.py
@@ -266,6 +266,7 @@ class Bus(ibus.Object):
self.__config = self.__dbusconn.get_object(args[2], ibus.IBUS_CONFIG_PATH)
else:
self.__config = None
+ self.emit("config-reloaded")
retval = dbus.lowlevel.HANDLER_RESULT_HANDLED
# commit string signal
elif message.is_signal(ibus.IBUS_IFACE, "CommitString"):
diff --git a/launcher/ibus.in b/launcher/ibus.in
index f4ac580..020e6da 100644
--- a/launcher/ibus.in
+++ b/launcher/ibus.in
@@ -42,6 +42,7 @@ class Launcher(object):
self.__conf_pid = 0
self.__x11_pid = 0
self.__bus = None
+ self.__preload_engine_completed = False
def __start_process(self, path, args, cmd):
pid = 0
@@ -57,6 +58,9 @@ class Launcher(object):
self.__bus = None
ibus.main_quit()
+ def __bus_config_reloaded_cb(self, bus):
+ self.__launch_auto_load_engines()
+
def __signal_cb(self, sig, stack):
if sig == signal.SIGCHLD:
pid, status = os.wait()
@@ -115,22 +119,23 @@ class Launcher(object):
sys.exit(1)
self.__bus.connect("destroy", self.__bus_destroy_cb)
+ self.__bus.connect("config-reloaded", self.__bus_config_reloaded_cb)
self.__conf_pid = self.__start_process(conf, [conf], "ibus-conf")
self.__panel_pid = self.__start_process(panel, [panel], "ibus-panel")
self.__x11_pid = self.__start_process(x11, [x11, "--kill-daemon"], "ibus-x11")
- time.sleep(1)
- while ibus.main_iteration(False):
- pass
- self.__launch_auto_load_engines()
ibus.main()
def __launch_auto_load_engines(self):
+ if self.__preload_engine_completed:
+ return
engines = []
try:
engines = self.__bus.config_get_value("general", "preload_engines", None)
if not engines:
engines = []
+ else:
+ self.__preload_engine_completed = True
except:
pass
for e in engines: