void RimeWithWeaselHandler::Finalize() { m_active_session = 0; m_disabled = true; LOG(INFO) << "Finalizing la rime."; RimeFinalize(); }
static void rime_with_ibus() { ibus_init(); IBusBus *bus = ibus_bus_new(); g_object_ref_sink(bus); if (!ibus_bus_is_connected(bus)) { g_warning("not connected to ibus"); exit(0); } g_signal_connect(bus, "disconnected", G_CALLBACK(ibus_disconnect_cb), NULL); IBusConfig *config = ibus_bus_get_config(bus); if (!config) { g_warning("ibus config not accessible"); } else { g_object_ref_sink(config); ibus_rime_load_settings(config); g_signal_connect(config, "value-changed", G_CALLBACK(ibus_rime_config_value_changed_cb), NULL); } IBusFactory *factory = ibus_factory_new(ibus_bus_get_connection(bus)); g_object_ref_sink(factory); ibus_factory_add_engine(factory, "rime", IBUS_TYPE_RIME_ENGINE); if (!ibus_bus_request_name(bus, "com.googlecode.rimeime.Rime", 0)) { g_error("error requesting bus name"); exit(1); } if (!notify_init("ibus-rime")) { g_error("notify_init failed"); exit(1); } RimeSetupLogging("rime.ibus"); gboolean full_check = FALSE; ibus_rime_start(full_check); ibus_main(); RimeFinalize(); notify_uninit(); if (config) { g_object_unref(config); } g_object_unref(factory); g_object_unref(bus); }
static void sigterm_cb(int sig) { RimeFinalize(); notify_uninit(); exit(EXIT_FAILURE); }
// entry and exit static void finalize(JNIEnv *env, jobject thiz) { ALOGE("finalize..."); RimeFinalize(); }