func sourceAttach(src *C.struct__GSource, rf reflect.Value, args ...interface{}) (SourceHandle, error) {
	if src == nil {
		return 0, errNilPtr
	}

	// rf must be a func with no parameters.
	if rf.Type().Kind() != reflect.Func {
		C.g_source_destroy(src)
		return 0, errors.New("rf is not a function")
	}

	// Create a new GClosure from f that invalidates itself when
	// f returns false.  The error is ignored here, as this will
	// always be a function.
	var closure *C.GClosure
	closure, _ = ClosureNew(rf.Interface(), args...)

	// Remove closure context when closure is finalized.
	C._g_closure_add_finalize_notifier(closure)

	// Set closure to run as a callback when the idle source runs.
	C.g_source_set_closure(src, closure)

	// Attach the idle source func to the default main event loop
	// context.
	cid := C.g_source_attach(src, nil)
	return SourceHandle(cid), nil
}
func sourceAttach(src *C.struct__GSource, rf reflect.Value, args ...interface{}) (SourceHandle, error) {
	if src == nil {
		return 0, errNilPtr
	}

	
	if rf.Type().Kind() != reflect.Func {
		C.g_source_destroy(src)
		return 0, errors.New("rf is not a function")
	}

	
	
	
	var closure *C.GClosure
	closure, _ = ClosureNew(rf.Interface(), args...)

	
	C._g_closure_add_finalize_notifier(closure)

	
	C.g_source_set_closure(src, closure)

	
	
	cid := C.g_source_attach(src, nil)
	return SourceHandle(cid), nil
}
func sourceAttach ( src * C . struct__GSource , rf reflect . Value , args ... interface { } ) ( SourceHandle , error ) { if src == nil { return 0 , errNilPtr } // rf must be a func with no parameters. if rf . Type ( ) . Kind ( ) != reflect . Func { C . g_source_destroy ( src ) return 0 , errors . New ( " " ) } // Create a new GClosure from f that invalidates itself when // f returns false.  The error is ignored here, as this will // always be a function. var closure * C . GClosure closure , _ = ClosureNew ( rf . Interface ( ) , args ... ) // Remove closure context when closure is finalized. C . _g_closure_add_finalize_notifier ( closure ) // Set closure to run as a callback when the idle source runs. C . g_source_set_closure ( src , closure ) // Attach the idle source func to the default main event loop // context. cid := C . g_source_attach ( src , nil ) return SourceHandle ( cid ) , nil }
// sourceAttach attaches a source to the default main loop context.
sourceAttach attaches a source to the default main loop context .