Remove the wait for the ibus daemon to start

The initial implementation of Uinicode input via IBus used a startup delay
of 3 seconds to wait for the daemon to be ready before connecting to it.

This commit introduces a poll-wait loop which can remove the delay
entirely if the daemon is up when chansrv starts the interface.
This commit is contained in:
matt335672 2024-05-23 16:35:53 +01:00
parent de5711637f
commit f0069456f9

View File

@ -220,8 +220,21 @@ xrdp_input_unicode_init(void)
return 0;
}
/* Wait becasue ibus daemon may not be ready in first login. Do we have a flag to avoid busy waiting? */
sleep(3);
/* Wait because the ibus daemon may not be ready on first login */
const char *addr = ibus_get_address();
unsigned int cnt = 0;
while (!addr && cnt < 10)
{
usleep(500 * 1000); // half a second
addr = ibus_get_address();
++cnt;
}
if (!addr)
{
LOG(LOG_LEVEL_ERROR,
"xrdp_ibus_init: Timed out waiting for iBus daemon");
return 1;
}
LOG(LOG_LEVEL_INFO, "xrdp_ibus_init: Initializing the iBus engine");
ibus_init();