XPending(3) イベントキューの出力バッファを扱う

Other Alias

XFlush, XSync, XEventsQueued

書式

XFlush(display)

      Display *display;

XSync(display, discard)

      Display *display;

      Bool discard;

int XEventsQueued(display, mode)

     Display *display;

     int mode;

int XPending(display)

      Display *display;

引き数

discard
XSync がイベントキューの全てのイベントを破棄するかどうか指示する 真偽値を指定する。
display
X サーバへの接続を指定する。
mode
モードを指定する。 QueuedAlready, QueuedAfterFlush, QueuedAfterReading のいずれかを渡すことができる。

説明

関数 XFlush は出力バッファをフラッシュする。 出力バッファは XPending, XNextEvent, XWindowEvent を呼ぶことにより必要に応じて自動的にフラッシュされるので、ほとんどの クライアントアプリケーションはこの関数を使う必要はない。 サーバによって生成されたイベントは、ライブラリのイベントキューに入れら れることもある。

関数 XSync は出力バッファをフラッシュし、その後 X サーバが全てのイベントを受け取っ て処理するまで待つ。 生成された全てのエラーは、エラーハンドラを使って処理しなければならない。 Xlib が受け取るそれぞれのプロトコルエラーに対して、 XSync はクライアントのエラー処理ルーチンを呼び出す(11.8.2節参照)。 サーバによって生成された全てのイベントはライブラリのイベントキューに入 れられる。

最後になるが、 False を渡した場合、 XSync はキュー内のイベントを破棄しない。 True を渡した場合には、 XSync はキュー内のイベントを全て破棄する。 これには XSync が呼ばれる前にキューに入っていたものも含まれる。 クライアントアプリケーションが XSync を呼ぶ必要があることはほとんどない。

mode が QueuedAlready の場合、 XEventsQueued は既にイベントキュー内にある(そしてシステムコールを実行していない) イベントの数を返す。 mode が QueuedAfterFlush の場合には、 XEventsQueued は既にキューに入っているイベントの数が 0 個でなければ、その数を返す。 キューにイベントが入っていなければ、 XEventsQueued は出力バッファをフラッシュし、アプリケーションの接続の中からさらに イベントを読み出そうと試み、読み出せた数を返す。 mode が QueuedAfterReading の場合、 XEventsQueued は、既にキューに入っているイベントの数が 0 個でなければその数を返す。 キューにイベントが入っていなければ、 XEventsQueued は出力バッファをフラッシュせずに、アプリケーションの接続から さらにイベントを読み出そうと試み、読み出すことができた数を返す。

XEventsQueued は、既にキュー内にイベントがあれば、入出力なしで即座に復帰する。 mode が QueuedAfterFlush である XEventsQueued の動作は XPending と同一である。 mode が QueuedAlready である XEventsQueued は関数 XQLength と同一である。

関数 XPending は X サーバが受け取っているが、イベントキューからは削除されていない イベントの数を返す。 XPending は mode QueuedAfterFlush が指定されている XEventsQueued と同じである。