summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrej Shadura <andrew.shadura@collabora.co.uk>2019-01-15 14:01:04 +0100
committerAndrej Shadura <andrew.shadura@collabora.co.uk>2019-01-15 14:01:04 +0100
commitd85cd1ec972616664e9912ebc62d1c821c42604a (patch)
tree3750ee2519ad592b82a921f7de28a60f033a92ef
parent283d6994d2d39096406b2d1aee6b9efb2fb335b5 (diff)
parent22a65f638654f259107fcd4c306d544550a82ede (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--.gitignore2
-rw-r--r--pkg/otbuiltin/builtin.go29
-rw-r--r--pkg/otbuiltin/sysroot.go2
3 files changed, 16 insertions, 17 deletions
diff --git a/.gitignore b/.gitignore
index 133aa3e..daf913b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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 {