XGrabPointer轮询到下一个事件或管道

时间:2015-09-03 13:51:41

标签: pthreads x11

我试图写一个鼠标事件监听器。这是我的方法,请你在我开始编写之前告诉我这是否有效。我是用ctypes写的,所以如果我把它全部(几天),那么就发现它没有用到它的时间。

我的目标是,我应该可以通过管道取消投票。这是我的方法:

  1. 在另一个线程中呼叫XThreadsInit
  2. 打开XDisplay display
  3. XGrabPointerdisplay
  4. 获取文件描述符ConnectionNumber(display)
  5. 连接到主线程上制作的管道
  6. 管道上的pselect设置为timeout,而管道上的fd设置为null
  7. 这是正确的做法吗? 感谢

1 个答案:

答案 0 :(得分:1)

如果您正在使用线程,则在线程之间共享变量。使用必须中止轮询时设置的全局变量会更加简单,然后在监视线程中创建一个紧密循环,检查该变量并在pselect()中使用短暂超时。这可能会引入一个短暂的延迟,但是如果你保持超时时间很短(比如100毫秒),它将难以显示并仍然有效。