XSync(display, discard)
Display *display;
Bool discard;
int XEventsQueued(display, mode)
Display *display;
int mode;
int XPending(display)
Display *display;
関数 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 と同じである。