Qt应用程序滞后,xorg使用了大量的CPU

时间:2013-05-28 07:13:08

标签: c++ qt xorg qglwidget compiz

我的Qt应用程序遇到了一些问题,这个问题非常缓慢而且有些滞后。最初它是在我现在使用的另一台机器上开发的,它似乎在那里工作得很好。现在,我可以看到,当我启动应用程序时,xorg进程的CPU负载非常高(> 25%),尽管它几乎没有做任何事情。

我正在使用两个QGLWidgets以25fps的帧速率绘制2D图形。我这样做的方法是重载paintEvent()函数。我已经读过这种函数会产生无限循环的情况,例如:在函数中创建新对象时。我已经尝试将代码减少到最小但问题仍然存在:

void GLMonitor::paintEvent(QPaintEvent *event)
{
    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);
    //aerpainter->paint(&painter, event, elapsed);
    painter.end();
}

它不会绘制任何东西(因为它应该因为我注释掉了aerpainter-> paint())但是xorg仍然处于25%的CPU负载且GUI很慢。

定时器的超时信号(周期为25Hz)连接到以下插槽,该插槽应触发paintEvent,因为它在其中一个Qt示例中完成:

void GLMonitor::animate()
{
    elapsed = (elapsed + qobject_cast<QTimer*>(sender())->interval()) % 1000;
    repaint();
}

以下是一些可能与问题相关的其他观察结果:

  • 有很多kworker和迁移过程也使用了相当多的CPU(总计大约10%-30%)。

  • 我在原始机器上测试了应用程序,但是我注意到不是xorg而是compiz有很高的CPU负载(大约80%),即使它没有绘制任何东西......

更新:我刚刚意识到,当我增加fps时,其他Qt应用程序(如2dpainting演示版)也会滞后,即使我注释掉绘画代码(如上图所示)。所以他们整个问题可能与我的系统有关......?

0 个答案:

没有答案