1

私は X11 アプリケーションに取り組んでおり、現在キューにあるイベントを処理し、ブロックせずに戻る関数を作成しようとしています。

私が見つけたすべての Xlib チュートリアルでは、イベントの準備が整うまで XNextEvent 呼び出しごとにブロックする永久ループで XNextEvent を使用しています。

XEventsQueued を QueuedAlready で調べたところ、処理の準備が整ったイベントの数が返されるはずですが、XNextEvent で取得できるイベントがあることがわかっている場合でも、常に 0 が返されます。

ここで何か不足していますか、またはキューに利用可能なイベントがあるかどうかを判断する別の方法はありますか?

4

1 に答える 1

1

QueuedAlready を使用して XEventsQueued を呼び出すと、イベントが接続から読み取られず、キューに入れられないように見えます。QueuedAfterFlush を指定して XEventsQueued を呼び出すと、出力バッファーがフラッシュされ、接続で使用可能なすべてのイベントがイベント キューに読み込まれます。XPending も同じことを行います。QueuedAfterFlush または XPending が必要でした。

于 2013-01-17T00:43:09.230 に答える