gotk4 icon indicating copy to clipboard operation
gotk4 copied to clipboard

gtk.Picture memory leak

Open iamdrq opened this issue 8 months ago • 1 comments

First.Thanks for your work.

This is a test demo:

package main

import (
	"github.com/diamondburned/gotk4/pkg/gdk/v4"
	"github.com/diamondburned/gotk4/pkg/gio/v2"
	"github.com/diamondburned/gotk4/pkg/glib/v2"
	"github.com/diamondburned/gotk4/pkg/gtk/v4"
	"github.com/disintegration/imaging"
	"log"
	"os"
	"runtime"
	"time"
)

func main() {
	application := gtk.NewApplication("com.demo", gio.ApplicationFlagsNone)
	application.Connect("activate", func() {
		log.Println("application activate")
		w := gtk.NewWindow()
		w.SetVisible(true)
		img := gtk.NewPicture()
		img.SetVisible(true)
		w.SetChild(img)
		application.AddWindow(w)
		go func() {
			for range time.Tick(time.Second) {
				src, _ := imaging.Open("a.png")
				dst := imaging.Blur(src, 1)
				glib.IdleAdd(func() {
					data := glib.NewBytes(dst.Pix)
					text := gdk.NewMemoryTexture(dst.Bounds().Dx(), dst.Bounds().Dy(), gdk.MemoryR8G8B8A8, data, uint(dst.Stride))
					img.SetPaintable(text)
					runtime.GC()
				})
			}
		}()
	})
	os.Exit(application.Run(os.Args))
}

Run this that memory always increate.

iamdrq avatar Jun 07 '24 10:06 iamdrq