Simplify error handling

This commit is contained in:
Unrud 2023-05-08 21:27:38 +02:00
parent 6a1a7420dc
commit 1794150285
3 changed files with 13 additions and 64 deletions

View file

@ -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",

View file

@ -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)))
}

View file

@ -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
}