wl: fix sync pipe keepalive
Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
parent
a9adcd914b
commit
e732dca762
@ -94,7 +94,7 @@ func bindRawConn(done chan struct{}, rc syscall.RawConn, p, appID, instanceID st
|
|||||||
|
|
||||||
// keep socket alive until done is requested
|
// keep socket alive until done is requested
|
||||||
<-done
|
<-done
|
||||||
runtime.KeepAlive(syncPipe[1].Fd())
|
runtime.KeepAlive(syncPipe[1])
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
setupDone <- err
|
setupDone <- err
|
||||||
}
|
}
|
||||||
@ -107,7 +107,7 @@ func bindRawConn(done chan struct{}, rc syscall.RawConn, p, appID, instanceID st
|
|||||||
return syncPipe[1], <-setupDone
|
return syncPipe[1], <-setupDone
|
||||||
}
|
}
|
||||||
|
|
||||||
func bind(fd uintptr, p, appID, instanceID string, syncFD uintptr) error {
|
func bind(fd uintptr, p, appID, instanceID string, syncFd uintptr) error {
|
||||||
// ensure p is available
|
// ensure p is available
|
||||||
if f, err := os.Create(p); err != nil {
|
if f, err := os.Create(p); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -117,5 +117,5 @@ func bind(fd uintptr, p, appID, instanceID string, syncFD uintptr) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return bindWaylandFd(p, fd, appID, instanceID, syncFD)
|
return bindWaylandFd(p, fd, appID, instanceID, syncFd)
|
||||||
}
|
}
|
||||||
|
4
wl/wl.go
4
wl/wl.go
@ -25,11 +25,11 @@ var resErr = [...]error{
|
|||||||
2: errors.New("wp_security_context_v1 not available"),
|
2: errors.New("wp_security_context_v1 not available"),
|
||||||
}
|
}
|
||||||
|
|
||||||
func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFD uintptr) error {
|
func bindWaylandFd(socketPath string, fd uintptr, appID, instanceID string, syncFd uintptr) error {
|
||||||
if hasNull(appID) || hasNull(instanceID) {
|
if hasNull(appID) || hasNull(instanceID) {
|
||||||
return ErrContainsNull
|
return ErrContainsNull
|
||||||
}
|
}
|
||||||
res := C.f_bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFD))
|
res := C.f_bind_wayland_fd(C.CString(socketPath), C.int(fd), C.CString(appID), C.CString(instanceID), C.int(syncFd))
|
||||||
return resErr[int32(res)]
|
return resErr[int32(res)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user