diff --git a/src/uhid/__init__.py b/src/uhid/__init__.py index 654b054..f86404d 100644 --- a/src/uhid/__init__.py +++ b/src/uhid/__init__.py @@ -370,10 +370,14 @@ def __init__(self, loop: Optional[asyncio.AbstractEventLoop] = None) -> None: self._loop.add_reader(self._uhid, self._read) def _async_writer(self) -> None: - self._write(self._write_queue.pop(0)) - if not self._write_queue: - self._loop.remove_writer(self._uhid) - self._writer_registered = False + try: + self._write(self._write_queue.pop(0)) + except IndexError: + self.__logger.info("writer: queue empty") + finally: + if not self._write_queue: + self._loop.remove_writer(self._uhid) + self._writer_registered = False def _send_event(self, event: bytes) -> None: # TODO: benchmark loop.add_writer vs plain write, I feel plain write should be faster in the UHID fd