From 1f659f1f145c702c75cf249d6e6fa644761e1bae Mon Sep 17 00:00:00 2001 From: RSWilli Date: Thu, 22 Aug 2024 17:38:55 +0200 Subject: [PATCH] promise add missing ref and remove syncOnce --- gst/gst_promise.go | 6 ++++++ gst/gst_promise_test.go | 14 +++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/gst/gst_promise.go b/gst/gst_promise.go index 20ed8a9..a9d30be 100644 --- a/gst/gst_promise.go +++ b/gst/gst_promise.go @@ -198,5 +198,11 @@ func marshalPromise(p unsafe.Pointer) (interface{}, error) { done: nil, // cannot be awaited if received from FFI } + prom.Ref() + + runtime.SetFinalizer(prom, func(p *Promise) { + p.Unref() + }) + return prom, nil } diff --git a/gst/gst_promise_test.go b/gst/gst_promise_test.go index 3d29f42..bc3baa8 100644 --- a/gst/gst_promise_test.go +++ b/gst/gst_promise_test.go @@ -4,10 +4,8 @@ import ( "context" "errors" "runtime" - "sync" "testing" "time" - "unsafe" ) //go:noinline @@ -35,9 +33,7 @@ func awaitGC() { } func TestPromise(t *testing.T) { - initOnce.Do(func() { - Init(nil) - }) + Init(nil) prom := NewPromise() cprom := prom.Instance() @@ -87,12 +83,8 @@ func TestPromise(t *testing.T) { awaitGC() } -var initOnce sync.Once - func TestPromiseMarshal(t *testing.T) { - initOnce.Do(func() { - Init(nil) - }) + Init(nil) prom := NewPromise() @@ -102,7 +94,7 @@ func TestPromiseMarshal(t *testing.T) { t.Fatal(err) } - receivedPromI, err := marshalPromise(unsafe.Pointer(gv.GValue)) + receivedPromI, err := gv.GoValue() if err != nil { t.Fatal(err)