Simplify error handling
This commit is contained in:
parent
6a1a7420dc
commit
1794150285
3 changed files with 13 additions and 64 deletions
|
|
@ -25,7 +25,6 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"github.com/godbus/dbus/v5"
|
||||
"sync"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -45,7 +44,6 @@ type portalController struct {
|
|||
bus *dbus.Conn
|
||||
remoteDesktop dbus.BusObject
|
||||
sessionHandle dbus.ObjectPath
|
||||
lock sync.RWMutex
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
|
@ -177,25 +175,10 @@ func getResponse(bus *dbus.Conn, object dbus.BusObject, method string,
|
|||
}
|
||||
|
||||
func (p *portalController) Close() error {
|
||||
p.lock.Lock()
|
||||
defer p.lock.Unlock()
|
||||
if p.bus == nil {
|
||||
return errors.New("dbus connection closed")
|
||||
}
|
||||
if err := p.bus.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
p.bus = nil
|
||||
p.remoteDesktop = nil
|
||||
return nil
|
||||
return p.bus.Close()
|
||||
}
|
||||
|
||||
func (p *portalController) keyboardKeys(keys []Keysym) error {
|
||||
p.lock.RLock()
|
||||
defer p.lock.RUnlock()
|
||||
if p.bus == nil {
|
||||
return errors.New("dbus connection closed")
|
||||
}
|
||||
inVardict := make(map[string]dbus.Variant)
|
||||
for _, keysym := range keys {
|
||||
for _, state := range [...]uint32{btnPressed, btnReleased} {
|
||||
|
|
@ -231,11 +214,6 @@ func (p *portalController) KeyboardKey(key Key) error {
|
|||
}
|
||||
|
||||
func (p *portalController) PointerButton(button PointerButton, press bool) error {
|
||||
p.lock.RLock()
|
||||
defer p.lock.RUnlock()
|
||||
if p.bus == nil {
|
||||
return errors.New("dbus connection closed")
|
||||
}
|
||||
var btn int32
|
||||
switch button {
|
||||
case PointerButtonLeft:
|
||||
|
|
@ -260,11 +238,6 @@ func (p *portalController) PointerButton(button PointerButton, press bool) error
|
|||
}
|
||||
|
||||
func (p *portalController) PointerMove(deltaX, deltaY int) error {
|
||||
p.lock.RLock()
|
||||
defer p.lock.RUnlock()
|
||||
if p.bus == nil {
|
||||
return errors.New("dbus connection closed")
|
||||
}
|
||||
inVardict := make(map[string]dbus.Variant)
|
||||
if err := p.remoteDesktop.Call("org.freedesktop.portal.RemoteDesktop.NotifyPointerMotion",
|
||||
0, p.sessionHandle, inVardict, float64(deltaX), float64(deltaY)).Store(); err != nil {
|
||||
|
|
@ -274,11 +247,6 @@ func (p *portalController) PointerMove(deltaX, deltaY int) error {
|
|||
}
|
||||
|
||||
func (p *portalController) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error {
|
||||
p.lock.RLock()
|
||||
defer p.lock.RUnlock()
|
||||
if p.bus == nil {
|
||||
return errors.New("dbus connection closed")
|
||||
}
|
||||
inVardict := make(map[string]dbus.Variant)
|
||||
inVardict["finish"] = dbus.MakeVariant(finish)
|
||||
if err := p.remoteDesktop.Call("org.freedesktop.portal.RemoteDesktop.NotifyPointerAxis",
|
||||
|
|
|
|||
|
|
@ -74,11 +74,7 @@ func InitUinputController() (Controller, error) {
|
|||
}
|
||||
|
||||
func (p *uinputController) Close() error {
|
||||
if err := p.keyboard.Close(); err != nil {
|
||||
p.mouse.Close()
|
||||
return err
|
||||
}
|
||||
return p.mouse.Close()
|
||||
return errors.Join(p.keyboard.Close(), p.mouse.Close())
|
||||
}
|
||||
|
||||
func (p *uinputController) KeyboardText(text string) error {
|
||||
|
|
@ -199,8 +195,5 @@ func (p *uinputController) PointerMove(deltaX, deltaY int) error {
|
|||
}
|
||||
|
||||
func (p *uinputController) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error {
|
||||
if err := p.mouse.Wheel(false, int32(deltaVertical)); err != nil {
|
||||
return err
|
||||
}
|
||||
return p.mouse.Wheel(true, int32(deltaHorizontal))
|
||||
return errors.Join(p.mouse.Wheel(false, int32(deltaVertical)), p.mouse.Wheel(true, int32(deltaHorizontal)))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,12 +111,9 @@ func (p *windowsController) sendInput(inputs []keybdInput) error {
|
|||
if len(inputs) == 0 {
|
||||
return nil
|
||||
}
|
||||
if r, _, err := sendInputProc.Call(uintptr(len(inputs)),
|
||||
uintptr(unsafe.Pointer(&inputs[0])),
|
||||
unsafe.Sizeof(inputs[0])); int(r) != len(inputs) {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
_, _, err := sendInputProc.Call(uintptr(len(inputs)),
|
||||
uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0]))
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *windowsController) KeyboardText(text string) error {
|
||||
|
|
@ -197,11 +194,8 @@ func (p *windowsController) PointerButton(button PointerButton, press bool) erro
|
|||
} else {
|
||||
return fmt.Errorf("unsupported pointer button: %#v", button)
|
||||
}
|
||||
if r, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)),
|
||||
unsafe.Sizeof(input)); int(r) != 1 {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
_, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), unsafe.Sizeof(input))
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *windowsController) PointerMove(deltaX, deltaY int) error {
|
||||
|
|
@ -211,11 +205,8 @@ func (p *windowsController) PointerMove(deltaX, deltaY int) error {
|
|||
dy: int32(deltaY),
|
||||
dwFlags: mouseeventfMove,
|
||||
}
|
||||
if r, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)),
|
||||
unsafe.Sizeof(input)); int(r) != 1 {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
_, _, err := sendInputProc.Call(1, uintptr(unsafe.Pointer(&input)), unsafe.Sizeof(input))
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *windowsController) PointerScroll(deltaHorizontal, deltaVertical int, finish bool) error {
|
||||
|
|
@ -237,10 +228,7 @@ func (p *windowsController) PointerScroll(deltaHorizontal, deltaVertical int, fi
|
|||
if len(inputs) == 0 {
|
||||
return nil
|
||||
}
|
||||
if r, _, err := sendInputProc.Call(uintptr(len(inputs)),
|
||||
uintptr(unsafe.Pointer(&inputs[0])),
|
||||
unsafe.Sizeof(inputs[0])); int(r) != len(inputs) {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
_, _, err := sendInputProc.Call(uintptr(len(inputs)),
|
||||
uintptr(unsafe.Pointer(&inputs[0])), unsafe.Sizeof(inputs[0]))
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue