用cairo绘图 类似内存泄漏的问题
我用cairo在窗口或子组件上绘图 其中有动画在鼠标移动事件或时钟事件中更新数据 , 用gtk_widget_draw()或gtk_widget_queue_draw()引发窗口重绘事件。
现在是问题是:发现每一次更新窗口时,内存就增加几百K. 起初以为是GLIB在缓冲,但这是一只不断的累加上去。
那么怎么解决这个问题。 你代码呢? 代码没带 我没网 我写个精简版的。
画板暴露事件()
{
/*Cairo的绘制代码和论坛里的教程的代码一个路数*/
/*每当执行cairo绘制后 内存就向上累加*/
/*cairo 绘图代码;*/
cairo_t cr = gdk_cairo_create();
//绘制矩形
释放对象(cr);
}
/*作用 让窗口重绘*/
鼠标移动事件(GtkWidget widget)
{
/*不是这里的问题 是我粗心*/
变量 re;
//re 设置代码
gtk_widget_draw(widget, &re);
/*后改成如下函数问题依旧存在*/
gtk_widget_queue_draw(widget);
}
/*主函数*/
int main()
{
//创建窗口函数
//创建画板函数
/*真正的问题在暴露事件里*/
连接 画板暴露事件;
连接 鼠标移动事件;
} 你试试gtk_widget_queue_draw_area() 这个好像也试过 跟gtk_widget_draw()类似;
还有一个 gtk_widget_queue_clear() 也试过 遭遇相同
不知还有无其他方法引发窗口重绘事件,主要是cairo绘制的图像能实时更新。 求救 再次求救 解决了 谢天谢地
页:
[1]