用于实时图形的GTKmm + cairo应用经常冻结

时间:2016-04-09 23:07:34

标签: c++ graphics gtk cairo gtkmm3

我正在编写一个C ++应用程序,其主窗口需要从服务器接收实时数据,并根据此数据实时绘制图表和直方图。我正在使用GTK3(实际上是它的C ++绑定gtkmm)和Cairo。

特别是,每1秒从网络接收数据,并且每次接收数据时都会发生刷新,因此每1秒钟就会发生一次。刷新是通过调用整个绘图区 的 invalidate_rect()方法完成的,其on_draw()甚至使用新接收的数据重绘所有数字和图。

现在,应用程序正常运行,但非常不可靠。特别是,它经常冻结,特别是当CPU负载增加时。我的应用程序的CPU使用率以及内存非常低。突然,窗口变得灰暗,没有响应,我需要用Ctrl-C杀死它,因为即使按下窗口关闭图标也不起作用。

我想知道:在上面的场景中调用invalidate_rect()是错误的方法吗?使用GTKMM / Cairo以可靠的方式获得平滑图形的更好方法是什么?

0 个答案:

没有答案