作者:pock
项目:go-gt
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
context := sourcefunc_contexts[int(sfi.func_no)]
t := context.f.Type()
fargs := make([]reflect.Value, t.NumIn())
if len(fargs) > 0 {
fargs[0] = reflect.ValueOf(context.data)
}
ret := context.f.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = gbool(bret)
}
}
作者:lei
项目:go-gt
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
context := sourcefunc_contexts[int(sfi.func_no)]
rf := reflect.ValueOf(context.f)
t := rf.Type()
fargs := make([]reflect.Value, t.NumIn())
n := 0
if len(fargs) > n && sfi.channel != nil {
fargs[n] = reflect.ValueOf(int(sfi.condition))
n++
}
if len(fargs) > n {
fargs[n] = reflect.ValueOf(context.data)
n++
}
ret := rf.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = bool2gboolean(bret)
}
}
作者:matt
项目:go-gt
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
id := int(sfi.func_no)
value, found := sourcefunc_contexts.Get(id)
if !found {
return
}
context := value.(*SourcefuncContext)
t := context.f.Type()
fargs := make([]reflect.Value, t.NumIn())
if len(fargs) > 0 {
fargs[0] = reflect.ValueOf(context.data)
}
ret := context.f.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = gbool(bret)
}
if !gobool(sfi.ret) {
sourcefunc_contexts.Remove(id)
}
}