Hi,

Is there some way by which we can make global engine immortal? So if there
is only one engine running, which is the global engine, can the global
engine be restarted so that the user input is not interrupted?

There seems to be an issue with bus_ibus_impl_check_global_engine function.
It checks if the current global engine is not removed by calling
_find_engine_desc_by_name and this function checks the global engine in
ibus->register_engine_list and ibus->engine_list.

If the global engine component crashes, then the global engine will be
removed from ibus->register_engine_list in _component_destroy_cb but it will
not be removed from ibus->engine_list unless the preload engine list is
changed.

Thus, _find_engine_desc_by_name is able to find the crashed global engine in
ibus->engine_list and bus_ibus_impl_check_global_engine function returns
assuming global engine is not removed.

On changing this and setting ibus->global_engine_name=NULL when global
engine crashes, the global engine correctly restarts. But the input context
engine is set to NULL and context is disabled in the function
_engine_destroy_cb. Thus, the current input context is not using the global
engine.

Please let me know if there is a way to restart global engine on crash and
set the current input context to use the same.

Thanks & regards,
Ria

-- 
You received this message because you are subscribed to the Google
Groups "ibus-devel" group.
iBus project web page: http://code.google.com/p/ibus/
iBus dev group: http://groups.google.com/group/ibus-devel?hl=en

回复