summaryrefslogtreecommitdiff
path: root/src/nigui/private/gtk3/platform_impl.nim
diff options
context:
space:
mode:
authortrustable-code <krauter.simon@arcor.de>2018-04-08 03:01:28 +0200
committertrustable-code <krauter.simon@arcor.de>2018-04-08 03:01:28 +0200
commit9fe87be1c8b1b0a60e9f6e2776d40f8bc12793f6 (patch)
tree0567e8a68153e319ead35e3887450078b96d705a /src/nigui/private/gtk3/platform_impl.nim
parent2195c9ec6a2e5cf1b633817c9e9aec6f9f730b75 (diff)
downloadNiGui-9fe87be1c8b1b0a60e9f6e2776d40f8bc12793f6.tar.gz
NiGui-9fe87be1c8b1b0a60e9f6e2776d40f8bc12793f6.zip
Gtk: Fix memory leak on image saving
Diffstat (limited to 'src/nigui/private/gtk3/platform_impl.nim')
-rwxr-xr-xsrc/nigui/private/gtk3/platform_impl.nim3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/nigui/private/gtk3/platform_impl.nim b/src/nigui/private/gtk3/platform_impl.nim
index 09db57c..6bf791a 100755
--- a/src/nigui/private/gtk3/platform_impl.nim
+++ b/src/nigui/private/gtk3/platform_impl.nim
@@ -544,13 +544,16 @@ method loadFromFile(image: Image, filePath: string) =
method saveToPngFile(image: Image, filePath: string) =
let canvas = cast[CanvasImpl](image.fCanvas)
var pixbuf = gdk_pixbuf_get_from_surface(canvas.fSurface, 0, 0, image.width.cint, image.height.cint)
+ defer: g_object_unref(pixbuf)
var error: ptr GError
if not gdk_pixbuf_save(pixbuf, filePath, "png", error.addr, nil, nil, nil):
pRaiseGError(error)
+
method saveToJpegFile(image: Image, filePath: string, quality = 80) =
let canvas = cast[CanvasImpl](image.fCanvas)
var pixbuf = gdk_pixbuf_get_from_surface(canvas.fSurface, 0, 0, image.width.cint, image.height.cint)
+ defer: g_object_unref(pixbuf)
var error: ptr GError
if not gdk_pixbuf_save(pixbuf, filePath, "jpeg", error.addr, "quality", $quality, nil):
pRaiseGError(error)