Skip to content

Commit

Permalink
input.evdev: minor performance improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
benmoran56 committed Jun 22, 2023
1 parent bda9b85 commit 3f2793f
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions pyglet/input/linux/evdev.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ctypes
import warnings

from os import readv
from ctypes import c_uint16 as _u16
from ctypes import c_int16 as _s16
from ctypes import c_uint32 as _u32
Expand Down Expand Up @@ -306,7 +307,6 @@ def __init__(self, display, filename):
self._filename = filename

fileno = os.open(filename, os.O_RDONLY)
# event_version = EVIOCGVERSION(fileno).value

self._id = EVIOCGID(fileno)
self.id_bustype = self._id.bustype
Expand Down Expand Up @@ -357,6 +357,9 @@ def __init__(self, display, filename):
self.controls.sort(key=lambda c: c._event_code)
os.close(fileno)

self._event_size = ctypes.sizeof(InputEvent)
self._event_buffer = (InputEvent * 64)()

super().__init__(display, name)

def get_guid(self):
Expand Down Expand Up @@ -405,17 +408,16 @@ def select(self):
return

try:
events = (InputEvent * 64)()
bytes_read = os.readv(self._fileno, events)
bytes_read = readv(self._fileno, self._event_buffer)
except OSError:
self.close()
return

n_events = bytes_read // ctypes.sizeof(InputEvent)
for event in events[:n_events]:
n_events = bytes_read // self._event_size

for event in self._event_buffer[:n_events]:
try:
control = self.control_map[(event.type, event.code)]
control.value = event.value
self.control_map[(event.type, event.code)].value = event.value
except KeyError:
pass

Expand Down Expand Up @@ -651,5 +653,4 @@ def _create_controller(device):

def get_controllers(display=None):
return [controller for controller in
[_create_controller(device) for device in get_devices(display)]
if controller is not None]
[_create_controller(device) for device in get_devices(display)] if controller]

0 comments on commit 3f2793f

Please sign in to comment.