92fdb09959
A few follow-on fixes found while testing the ibus reconnect changes in a live session: - xrdp_input_unicode_init() failed outright if ibus had no default global engine yet at connect time, which is a normal state on a fresh session (nothing has chosen one yet), not an error. Since nothing else used the return value, this permanently killed unicode input for the whole session over a spurious check. - ibus can disable our engine instance (e.g. on a focus change) while leaving the global engine name as "XrdpIme", since those are tracked separately. xrdp_input_enable()'s fast path only checked the name, so it could skip re-asserting and leave xrdp_input_send_unicode() committing text through a disabled g_engine. Clear g_engine on disable and require it to be set for the fast path to apply. - ibus_engine_commit_text() was being called from chansrv's own thread, not the thread pumping the glib main loop that owns the engine's D-Bus connection (xrdp_input_main_loop). Marshal the actual commit through g_main_context_invoke() onto the correct thread. None of these are the full fix for intermittent dropped commits during real pinyin input testing - that's still open, with the current lead being ibus Reset calls interleaved with commit bursts, likely from the FocusOut/FocusIn churn caused by passing every raw keystroke through engine_process_key_event_cb. To be continued. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>