summaryrefslogtreecommitdiffstats
path: root/src/PYMain.cc
diff options
context:
space:
mode:
authorPeng Huang <shawn.p.huang@gmail.com>2010-11-24 16:53:36 +0900
committerPeng Huang <shawn.p.huang@gmail.com>2010-11-24 16:53:36 +0900
commit15b9b66b013ee83974b3ae16a76983cc10e9dbe8 (patch)
treed03747c64f5d2c8b3faff77ebc42f43ed6f1be2b /src/PYMain.cc
parentf067b7a651cf24f7234441a31c0f88191cb74a42 (diff)
downloadibus-libpinyin-15b9b66b013ee83974b3ae16a76983cc10e9dbe8.tar.gz
ibus-libpinyin-15b9b66b013ee83974b3ae16a76983cc10e9dbe8.tar.xz
ibus-libpinyin-15b9b66b013ee83974b3ae16a76983cc10e9dbe8.zip
Use in memory user database to improve performance.
I found pinyin's performance is very low when system IO load is big. So I let pinyin use im memory user database to improve the performance, and write the database to the harddisk in 60 seconds or when engine exits. BUG=none TEST=manual Review URL: http://codereview.appspot.com/3303041
Diffstat (limited to 'src/PYMain.cc')
-rw-r--r--src/PYMain.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/PYMain.cc b/src/PYMain.cc
index 463ec2f..021201f 100644
--- a/src/PYMain.cc
+++ b/src/PYMain.cc
@@ -131,6 +131,21 @@ start_component (void)
ibus_main ();
}
+#include <signal.h>
+
+static void
+sigterm_cb (int sig)
+{
+ PY::Database::finalize ();
+ ::exit (EXIT_FAILURE);
+}
+
+static void
+atexit_cb (void)
+{
+ PY::Database::finalize ();
+}
+
int
main (gint argc, gchar **argv)
{
@@ -148,6 +163,10 @@ main (gint argc, gchar **argv)
exit (-1);
}
+ ::signal (SIGTERM, sigterm_cb);
+ ::signal (SIGINT, sigterm_cb);
+ g_atexit (atexit_cb);
+
start_component ();
return 0;
}