Other Alias
XAddConnectionWatch, XRemoveConnectionWatch, XProcessInternalConnection書式
typedef void (*XConnectionWatchProc)(display, client_data, fd, opening, watch_data)Display *display;
XPointer client_data;
int fd;
Bool opening;
XPointer *watch_data;
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;
引き数
- client_data
- 付加的なクライアントデータを指定。
- count_return
- ファイルデスクリプタの数を返す。
- display
- X サーバへの接続を指定。
- fd
- ファイルデスクリプタを指定。
- fd_return
- ファイルデスクリプタが返される。
- procedure
- 呼び出される手続きを指定。
説明
関数 XAddConnectionWatch は指定したディスプレイに対して、Xlib の内部接続をオープンあるいはクロー ズするとき毎回呼び出される手続きを登録する。この手続きにはディスプレイ、 指定された client_data, 接続のファイルデスクリプタ、接続のオープン/ク ローズを示す真偽値、プライベートな監視データへのポインタが渡される。 引き数 opening が True ならば、この手続きはプライベートなデータへのポインタを watch_data が指 す場所に格納することができる。その後、同じ接続に対してこの手続きが呼ば れ、opening が False である時、watch_data が指す場所には同じプライベートなデータへのポイン タが格納されている。この関数はディスプレイをオープンした後はいつでも呼ぶことができる。 内部接続が既に存在する場合、登録された手続きはそれぞれの接続に対して即 座に呼び出される。この処理は XAddConnectionWatch から処理が戻ってくる前に行われる。 XAddConnectionWatch は手続きの登録に成功すれば 0 でないステータスを返し、そうでない場合に は 0 を返す。
登録する手続きからは Xlib の関数を呼び出してはならない。 手続きが直接的、間接的に内部接続の状態を変えたり、監視の手続きを変えた りした場合の結果は未定義である。 Xlib がスレッドを使うように初期化されている場合、この手続きは呼び出さ れるときにロックされたディスプレイを与えられるが、ディスプレイをロック するような Xlib 関数を呼び出すと、その結果は未定義となる。 ただし、動作しているスレッドが XLockDisplay を使って外部からディスプレイをロックしている場合はこの限りではない。
関数 XRemoveConnectionWatch は以前登録した接続監視手続きを削除する。 client_data は、この手続きが最初に登録されたときに用いられた client_data と一致しなければならない。
関数 XProcessInternalConnection は内部接続で利用可能な入力を処理する。 この関数はOSの入力監視機能(例えば select や poll )によって入力が可能であることが示されるまでは、内部接続に対して呼び出 すべきではない。そうでない場合の影響は未定義である。
関数 XInternalConnectionNumbers は指定したディスプレイに対して現在オープンされている内部接続のファイル デスクリプタのリストを返す。 割り当てたリストが不要になった場合、 XFree を使ってこれを解放すること。 この関数はリストの解放に成功した場合に 0 でないステータスを返し、そう でない場合は 0 を返す。