ここでCの初心者ユーザー。
X11 / Xlibを使用してCでライブラリを構築しようとしているので、小さなプロジェクトにのみ使用できます。イベントを処理してユーザーからの入力(ボタンの押下とキーの押下)を取得しようとすると、問題が発生します。しばらくは正常に動作し、その後、時間の経過とともに大幅な遅延が発生し始めます。
今私が持っているのは、待機中のイベントがあるかどうかをチェックし、ある場合はそれを取得するプログラムです。
今の私の問題は、イベントがメモリに保存され、プログラムが停止していることだと思います。しかし、それは単なる推測です。
どんな助けでもありがたいです。ありがとうございました。
編集:コードを忘れた(私は何かを忘れたことを知っていた)
問題の2つの関数は次のとおりです。
int event_waiting()
{
XEvent event;
if(XCheckMaskEvent(dspy,-1,&event)) {
if(event.type==KeyPress) {
XPutBackEvent(dspy,&event);
return 1;
} else if (event.type==ButtonPress) {
XPutBackEvent(dspy,&event);
return 1;
}
} /* <<=== added missing close-curly here */
return 0;
}
char wait()
{
XEvent event;
XNextEvent(dspy,&event);
if(event.type==KeyPress) {
saved_x = event.xkey.x;
saved_y = event.xkey.y;
return XLookupKeysym(&event.xkey,0);
} else if(event.type==ButtonPress) {
saved_x = event.xkey.x;
saved_y = event.xkey.y;
return event.xbutton.button;
}
}
そして、彼らは主にそのように呼ばれます、
if (event_waiting()){
char c = wait();
//Switch case goes here
}
編集2:更新されたコード
XEvent event;
if(XCheckMaskEvent(display,-1,&event))
{
if(event.type==KeyPress) {
XPutBackEvent(display,&event);
return 1;
} else if (event.type==ButtonPress) {
XPutBackEvent(display,&event);
return 1;
}
}
XFlush(display);
return 0;
`