C的初学者在这里。
我正在尝试使用 X11/Xlib 在 C 中构建一个库,这样我就可以将它仅用于小项目,并且在尝试处理事件以从用户那里获取输入(按钮按下和按键)时遇到了问题。它可以正常工作一段时间,然后随着时间的推移开始显着滞后。
现在我所拥有的是我的程序检查是否有事件等待,如果有,则检索它。
我认为我现在的问题是事件被存储在内存中并且它使程序陷入困境。但这只是一个总的猜测。
任何帮助将不胜感激。谢谢你。
编辑:忘记代码(我知道我忘记了一些东西)
有问题的两个功能是:
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;
`