diff options
author | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-03 23:58:31 +0800 |
---|---|---|
committer | Huang Peng <shawn.p.huang@gmail.com> | 2008-10-03 23:58:31 +0800 |
commit | ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2 (patch) | |
tree | 58e2c90160db75042a64b51da6bad3838ed57a83 | |
parent | 0d2c788dfdd7a00f1ca2310a846357f485aa2432 (diff) | |
download | ibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.tar.gz ibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.tar.xz ibus-ca93a90da1f2ea506f36e4ada7bd2b300e4d41e2.zip |
WIP.
-rw-r--r-- | ibus/bus.py | 1 | ||||
-rw-r--r-- | launcher/ibus.in | 13 |
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: |