mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-27 03:02:49 +01:00
internal/gamepad: refactoring: use unix.InotifyEvent
This commit is contained in:
parent
ef45058037
commit
f6d8f42c36
@ -76,14 +76,6 @@ func _EVIOCGNAME(len uint) uint {
|
|||||||
return _IOC(_IOC_READ, 'E', 0x06, len)
|
return _IOC(_IOC_READ, 'E', 0x06, len)
|
||||||
}
|
}
|
||||||
|
|
||||||
type inotify_event struct {
|
|
||||||
wd int32 // TODO: The original type is C's int. Is it OK to use int32?
|
|
||||||
mask uint32
|
|
||||||
cookie uint32
|
|
||||||
len uint32
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
type input_absinfo struct {
|
type input_absinfo struct {
|
||||||
value int32
|
value int32
|
||||||
minimum int32
|
minimum int32
|
||||||
|
@ -227,26 +227,26 @@ func (g *nativeGamepads) update(gamepads *gamepads) error {
|
|||||||
buf = buf[:n]
|
buf = buf[:n]
|
||||||
|
|
||||||
for len(buf) > 0 {
|
for len(buf) > 0 {
|
||||||
e := inotify_event{
|
e := unix.InotifyEvent{
|
||||||
wd: int32(buf[0]) | int32(buf[1])<<8 | int32(buf[2])<<16 | int32(buf[3])<<24,
|
Wd: int32(buf[0]) | int32(buf[1])<<8 | int32(buf[2])<<16 | int32(buf[3])<<24,
|
||||||
mask: uint32(buf[4]) | uint32(buf[5])<<8 | uint32(buf[6])<<16 | uint32(buf[7])<<24,
|
Mask: uint32(buf[4]) | uint32(buf[5])<<8 | uint32(buf[6])<<16 | uint32(buf[7])<<24,
|
||||||
cookie: uint32(buf[8]) | uint32(buf[9])<<8 | uint32(buf[10])<<16 | uint32(buf[11])<<24,
|
Cookie: uint32(buf[8]) | uint32(buf[9])<<8 | uint32(buf[10])<<16 | uint32(buf[11])<<24,
|
||||||
len: uint32(buf[12]) | uint32(buf[13])<<8 | uint32(buf[14])<<16 | uint32(buf[15])<<24,
|
Len: uint32(buf[12]) | uint32(buf[13])<<8 | uint32(buf[14])<<16 | uint32(buf[15])<<24,
|
||||||
}
|
}
|
||||||
e.name = unix.ByteSliceToString(buf[16 : 16+e.len-1]) // len includes the null termiinate.
|
name := unix.ByteSliceToString(buf[16 : 16+e.Len-1]) // len includes the null termiinate.
|
||||||
buf = buf[16+e.len:]
|
buf = buf[16+e.Len:]
|
||||||
if !reEvent.MatchString(e.name) {
|
if !reEvent.MatchString(name) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
path := filepath.Join(dirName, e.name)
|
path := filepath.Join(dirName, name)
|
||||||
if e.mask&(unix.IN_CREATE|unix.IN_ATTRIB) != 0 {
|
if e.Mask&(unix.IN_CREATE|unix.IN_ATTRIB) != 0 {
|
||||||
if err := g.openGamepad(gamepads, path); err != nil {
|
if err := g.openGamepad(gamepads, path); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if e.mask&unix.IN_DELETE != 0 {
|
if e.Mask&unix.IN_DELETE != 0 {
|
||||||
if gp := gamepads.find(func(gamepad *Gamepad) bool {
|
if gp := gamepads.find(func(gamepad *Gamepad) bool {
|
||||||
return gamepad.path == path
|
return gamepad.path == path
|
||||||
}); gp != nil {
|
}); gp != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user