diff options
author | Andrej Shadura <andrew.shadura@collabora.co.uk> | 2019-01-15 14:01:04 +0100 |
---|---|---|
committer | Andrej Shadura <andrew.shadura@collabora.co.uk> | 2019-01-15 14:01:04 +0100 |
commit | d85cd1ec972616664e9912ebc62d1c821c42604a (patch) | |
tree | 3750ee2519ad592b82a921f7de28a60f033a92ef | |
parent | 283d6994d2d39096406b2d1aee6b9efb2fb335b5 (diff) | |
parent | 22a65f638654f259107fcd4c306d544550a82ede (diff) |
Update upstream source from tag 'upstream/0.0_git20180830.1ac74ff'
Update to upstream version '0.0~git20180830.1ac74ff'
with Debian dir 00c9e270e696e65025cf3fd68d1e8bed03c8b22c
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | pkg/otbuiltin/builtin.go | 29 | ||||
-rw-r--r-- | pkg/otbuiltin/sysroot.go | 2 |
3 files changed, 16 insertions, 17 deletions
@@ -22,5 +22,3 @@ _testmain.go *.exe *.test *.prof - -.pc diff --git a/pkg/otbuiltin/builtin.go b/pkg/otbuiltin/builtin.go index 35885ec..01b3d37 100644 --- a/pkg/otbuiltin/builtin.go +++ b/pkg/otbuiltin/builtin.go @@ -19,8 +19,7 @@ import ( import "C" type Repo struct { - //*glib.GObject - ptr unsafe.Pointer + *glib.Object } func cCancellable(c *glib.GCancellable) *C.GCancellable { @@ -29,24 +28,26 @@ func cCancellable(c *glib.GCancellable) *C.GCancellable { // Converts an ostree repo struct to its C equivalent func (r *Repo) native() *C.OstreeRepo { - //return (*C.OstreeRepo)(r.Ptr()) - return (*C.OstreeRepo)(r.ptr) + if r == nil || r.GObject == nil { + return nil + } + return (*C.OstreeRepo)(unsafe.Pointer(r.GObject)) } // Takes a C ostree repo and converts it to a Go struct -func repoFromNative(p *C.OstreeRepo) *Repo { - if p == nil { - return nil - } - //o := (*glib.GObject)(unsafe.Pointer(p)) - //r := &Repo{o} - r := &Repo{unsafe.Pointer(p)} - return r +func wrapRepo(p *C.OstreeRepo) *Repo { + g := glib.ToGObject(unsafe.Pointer(p)) + obj := &glib.Object{g} + repo := &Repo{obj} + + runtime.SetFinalizer(repo, (*Repo).Unref) + + return repo } // Checks if the repo has been initialized func (r *Repo) isInitialized() bool { - if r.ptr != nil { + if r.GObject != nil { return true } return false @@ -77,7 +78,7 @@ func OpenRepo(path string) (*Repo, error) { pathc := C.g_file_new_for_path(cpath) defer C.g_object_unref(C.gpointer(pathc)) crepo := C.ostree_repo_new(pathc) - repo := repoFromNative(crepo) + repo := wrapRepo(crepo) r := glib.GoBool(glib.GBoolean(C.ostree_repo_open(crepo, nil, &cerr))) if !r { return nil, generateError(cerr) diff --git a/pkg/otbuiltin/sysroot.go b/pkg/otbuiltin/sysroot.go index 8dff285..2c45d41 100644 --- a/pkg/otbuiltin/sysroot.go +++ b/pkg/otbuiltin/sysroot.go @@ -122,7 +122,7 @@ func (s *Sysroot) Repo(cancellable *glib.GCancellable) (*Repo, error) { if !gobool(r) { return nil, generateError(cerr) } - return repoFromNative(repo), nil + return wrapRepo(repo), nil } func (s *Sysroot) OriginNewFromRefspec(refspec string) *glib.GKeyFile { |