【发布时间】:2013-12-10 08:28:21
【问题描述】:
我需要在不暂停程序执行的情况下从 X 窗口系统获取事件。目前,我使用XNextEvent(dpy, &xev) 来获取事件,但是有没有办法同时获取事件并运行我自己的代码?
【问题讨论】:
-
您是否尝试在另一个(专用)线程中调用此函数?
我需要在不暂停程序执行的情况下从 X 窗口系统获取事件。目前,我使用XNextEvent(dpy, &xev) 来获取事件,但是有没有办法同时获取事件并运行我自己的代码?
【问题讨论】:
while (XPending(dpy))
{
XNextEvent(dpy, &e);
switch (e.type)
{
case Expose:
break;
// Manage events...
default:
break;
}
}
XPending(Display *display) :返回关联显示队列中的事件数。
你可以用这个函数之一替换XNextEvent(dpy, &e);,只为指定的窗口/掩码或同时获取两个事件:
这 3 个函数是非阻塞的。 例如,如果您只想为指定的窗口生成事件,您可以这样做:
while (XcheckWindowEvent(dpy, window, your_event_mask, &e))
{
switch (e.type)
{
case Expose:
break;
// Manage events...
default:
break;
}
}
PS : 对不起我的英语不好
【讨论】: