在Xlib编程中执行Sleep()

时间:2015-07-08 07:41:35

标签: c unix graphics x11 sleep

我在下面的代码部分中使用了sleep()。然而,令我惊讶的是,我发现首先执行sleep(),然后执行用于打印像素的两行。这意味着,在开始的1秒等待之后,我同时打印出两个像素。但是,我应该得到这样的东西,打印一个像素,然后等待1秒钟,然后打印下一个像素。可能是什么原因?好吧,我正在编写一个X11服务器显示程序。

  #include<xlib.h>
  #include<sys/time.h>
  ----------------  other header files
  ----------------
  int main ()
  ------------variables and few lines of code for X11 graphics

  XDrawPoint(.....);
  sleep(1);
  XDrawPoint(.....);

  ---------- Few other stuffs
  end

2 个答案:

答案 0 :(得分:2)

XLib缓冲一些请求(如绘图操作),并仅在必要时刷新此缓冲区。绘制第一个像素后,您可以使用XFlush

答案 1 :(得分:1)

请记住,默认情况下,X11是一种异步协议。

因此,请使用XFlush()或激活同步模式。

请参阅http://www.x.org/archive/X11R7.5/doc/man/man3/XFlush.3.html了解XSync命令。用true调用Xsync。

最好的关注