From 1794150285ab5f661379a6470bb4dd5309d0fff5 Mon Sep 17 00:00:00 2001 From: Unrud Date: Mon, 8 May 2023 21:27:38 +0200 Subject: [PATCH] Simplify error handling --- inputcontrol/controller_portal.go | 34 +----------------------------- inputcontrol/controller_uinput.go | 11 ++-------- inputcontrol/controller_windows.go | 32 +++++++++------------------- 3 files changed, 13 insertions(+), 64 deletions(-) diff --git a/inputcontrol/controller_portal.go b/inputcontrol/controller_portal.go index d8e2700..0863ce7 100644 --- a/inputcontrol/controller_portal.go +++ b/inputcontrol/controller_portal.go @@ -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", diff --git a/inputcontrol/controller_uinput.go b/inputcontrol/controller_uinput.go index 8e6023b..6c7debf 100644 --- a/inputcontrol/controller_uinput.go +++ b/inputcontrol/controller_uinput.go @@ -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))) } diff --git a/inputcontrol/controller_windows.go b/inputcontrol/controller_windows.go index 78c36a8..ad0b283 100644 --- a/inputcontrol/controller_windows.go +++ b/inputcontrol/controller_windows.go @@ -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 }