Canddisp *canddisp_singleton() { if (XimServer::gCandWinStyleUpdated) { terminate_canddisp_connection(); command = NULL; XimServer::gCandWinStyleUpdated = false; } if (!command) command = candwin_command(); if (!candwin_initted && command) { candwin_pid = uim_ipc_open_command(candwin_pid, &candwin_r, &candwin_w, command); if (disp) delete disp; disp = new Canddisp(); int fd = fileno(candwin_r); if (fd != -1) { int flag = fcntl(fd, F_GETFL); if (flag != -1) { flag |= O_NONBLOCK; if (fcntl(fd, F_SETFL, flag) != -1) add_fd_watch(fd, READ_OK, candwin_read_cb); } } candwin_initted = true; } return disp; }
static int pretrans_setup() { int fd = XConnectionNumber(XimServer::gDpy); add_fd_watch(fd, READ_OK, xEventRead); return fd; }