C xlib绘图线不会出现在事件循环之外

C xlib绘图线不会出现在事件循环之外,c,xlib,C,Xlib,我在一本书中举了一个例子,我有一个画线的绘图函数。当我将其放置在XFlush()之前的事件循环之前时,不会绘制线条,但如果我将其放置在事件循环中,如下面所示,则会绘制线条 while(1) { XNextEvent(display, &report); if (report.type == Expose) { draw_lines(win1, gca, 300, 200); }

我在一本书中举了一个例子,我有一个画线的绘图函数。当我将其放置在XFlush()之前的事件循环之前时,不会绘制线条,但如果我将其放置在事件循环中,如下面所示,则会绘制线条

while(1)
    {   
        XNextEvent(display, &report);
        if (report.type == Expose)
        {
            draw_lines(win1, gca, 300, 200);
        }
    }

有人能解释一下为什么会发生这种情况吗?多谢。为什么将函数放在事件循环中与否很重要?

xlib中似乎发生了一些变化。看看我的答案和它引用的其他答案

您可以先进行绘制和刷新,然后使用以下命令等待曝光事件:

  /* catch expose events */
  XSelectInput(display, win, ExposureMask);

  /* wait for the expose event */
  XEvent ev;
  XNextEvent(display, &ev);

抱歉,为了澄清问题,当我将draw_lines()放在事件循环的外部时,我删除了事件循环中与事件相关的部分。