当我使用 surface_create_from_png 时,my_conky.lua 中的 cairo 图形正在占用内存

当我使用 surface_create_from_png 时,my_conky.lua 中的 cairo 图形正在占用内存

我尝试conky.lua使用以下函数将图像添加到我的

function drawimage(cr,img)
    image = cairo_image_surface_create_from_png (img)
    cairo_set_source_surface (cr, image, screen.x, screen.y)
    cairo_paint (cr)
    cairo_surface_destroy (image)
end

启动后,conky我的电脑花了几分钟才冻结。重新启动后,我意识到该cairo_image_surface_create_from_png()功能会占用我的内存。

如果可能的话,我怎样才能防止这种情况发生?

答案1

我的猜测是,直到 conky 关闭或重新加载配置时,内存才会被释放。

drawimage您可以创建一个创建曲面的函数 x 和一个销毁曲面的函数 y,从 调用 xlua_startup_hook并从 调用 y,而不是在每次调用 时创建曲面lua_shutdown_hook。这样,表面只会在 Conky 启动或配置重新加载时创建一次,并在 Conky 关闭或配置重新加载时销毁一次。

有关lua_startup_hook和 的详细信息,请参阅 man conky lua_shutdown_hook

相关内容