36 lines
489 B
Go
36 lines
489 B
Go
|
package shim
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
// Wayland implements wayland mediation.
|
||
|
type Wayland struct {
|
||
|
// wayland socket path
|
||
|
Path string
|
||
|
|
||
|
// wayland connection
|
||
|
*net.UnixConn
|
||
|
|
||
|
connErr error
|
||
|
sync.Once
|
||
|
// wait for wayland client to exit
|
||
|
done chan struct{}
|
||
|
}
|
||
|
|
||
|
func (wl *Wayland) Close() error {
|
||
|
wl.Do(func() {
|
||
|
close(wl.done)
|
||
|
wl.connErr = wl.UnixConn.Close()
|
||
|
})
|
||
|
|
||
|
return wl.connErr
|
||
|
}
|
||
|
|
||
|
func NewWayland() *Wayland {
|
||
|
wl := new(Wayland)
|
||
|
wl.done = make(chan struct{})
|
||
|
return wl
|
||
|
}
|