Status XAddConnectionWatch(display, procedure, client_data)
Display *display;
XWatchProc procedure;
XPointer client_data;
Status XRemoveConnectionWatch(display, procedure, client_data)
Display *display;
XWatchProc procedure;
XPointer client_data;
void XProcessInternalConnection(display, fd)
Display *display;
int fd;
void XProcessInternalConnection(display, fd)
Display *display;
int fd;
Status XInternalConnectionNumbers(display, fd_return, count_return)
Display *display;
int **fd_return;
int *count_return;
この関数はディスプレイをオープンした後はいつでも呼ぶことができる。 内部接続が既に存在する場合、登録された手続きはそれぞれの接続に対して即 座に呼び出される。この処理は XAddConnectionWatch から処理が戻ってくる前に行われる。 XAddConnectionWatch は手続きの登録に成功すれば 0 でないステータスを返し、そうでない場合に は 0 を返す。
登録する手続きからは Xlib の関数を呼び出してはならない。 手続きが直接的、間接的に内部接続の状態を変えたり、監視の手続きを変えた りした場合の結果は未定義である。 Xlib がスレッドを使うように初期化されている場合、この手続きは呼び出さ れるときにロックされたディスプレイを与えられるが、ディスプレイをロック するような Xlib 関数を呼び出すと、その結果は未定義となる。 ただし、動作しているスレッドが XLockDisplay を使って外部からディスプレイをロックしている場合はこの限りではない。
関数 XRemoveConnectionWatch は以前登録した接続監視手続きを削除する。 client_data は、この手続きが最初に登録されたときに用いられた client_data と一致しなければならない。
関数 XProcessInternalConnection は内部接続で利用可能な入力を処理する。 この関数はOSの入力監視機能(例えば select や poll )によって入力が可能であることが示されるまでは、内部接続に対して呼び出 すべきではない。そうでない場合の影響は未定義である。
関数 XInternalConnectionNumbers は指定したディスプレイに対して現在オープンされている内部接続のファイル デスクリプタのリストを返す。 割り当てたリストが不要になった場合、 XFree を使ってこれを解放すること。 この関数はリストの解放に成功した場合に 0 でないステータスを返し、そう でない場合は 0 を返す。