Skip to content

Commit

Permalink
Merge pull request #3090 from matt335672/remove_ibus_daemon_delay
Browse files Browse the repository at this point in the history
Remove the wait for the ibus daemon to start
  • Loading branch information
matt335672 committed Jun 1, 2024
2 parents c47a87e + 5f91eec commit 5c4278c
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions sesman/chansrv/input_ibus.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,6 @@ xrdp_input_main_loop(void *in_val)
factory = ibus_factory_new(ibus_bus_get_connection(bus));
g_object_ref_sink(factory);
g_signal_connect(factory, "create-engine", G_CALLBACK(xrdp_input_ibus_create_engine), NULL);
g_signal_connect(factory, "enable", G_CALLBACK(xrdp_input_ibus_engine_enable), NULL);
g_signal_connect(factory, "disable", G_CALLBACK(xrdp_input_ibus_engine_disable), NULL);

ibus_factory_add_engine(factory, "XrdpIme", IBUS_TYPE_ENGINE);

Expand Down Expand Up @@ -220,8 +218,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();
Expand Down

0 comments on commit 5c4278c

Please sign in to comment.