summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevaev Maxim <[email protected]>2020-11-22 03:39:35 +0300
committerDevaev Maxim <[email protected]>2020-11-22 03:39:35 +0300
commit5a5e3a3cc96bd9f7e5b589db11ed1ff783a7d12d (patch)
tree1655b94e19ba7944ca19a04fec9d5900349a0472
parent7be5dc8c827a4c32740298f0df685859f0de9194 (diff)
refactoring
-rw-r--r--kvmd/plugins/hid/_mcu/__init__.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/kvmd/plugins/hid/_mcu/__init__.py b/kvmd/plugins/hid/_mcu/__init__.py
index 39f9f03d..cbecd286 100644
--- a/kvmd/plugins/hid/_mcu/__init__.py
+++ b/kvmd/plugins/hid/_mcu/__init__.py
@@ -256,22 +256,21 @@ class BaseMcuHid(BaseHid, multiprocessing.Process): # pylint: disable=too-many-
self.__queue_event(MouseWheelEvent(delta_x, delta_y))
def set_keyboard_output(self, output: str) -> None:
- # FIXME: Если очистка производится со стороны процесса хида, то возможна гонка между
- # очисткой и добавлением нового события. Неприятно, но не смертельно.
- # Починить блокировкой после перехода на асинхронные очереди.
- tools.clear_queue(self.__events_queue)
- self.__queue_event(SetKeyboardOutputEvent(output))
+ self.__queue_event(SetKeyboardOutputEvent(output), clear=True)
def set_mouse_output(self, output: str) -> None:
- tools.clear_queue(self.__events_queue)
- self.__queue_event(SetMouseOutputEvent(output))
+ self.__queue_event(SetMouseOutputEvent(output), clear=True)
def clear_events(self) -> None:
- tools.clear_queue(self.__events_queue)
- self.__queue_event(ClearEvent())
+ self.__queue_event(ClearEvent(), clear=True)
- def __queue_event(self, event: BaseEvent) -> None:
+ def __queue_event(self, event: BaseEvent, clear: bool=False) -> None:
if not self.__stop_event.is_set():
+ if clear:
+ # FIXME: Если очистка производится со стороны процесса хида, то возможна гонка между
+ # очисткой и добавлением нового события. Неприятно, но не смертельно.
+ # Починить блокировкой после перехода на асинхронные очереди.
+ tools.clear_queue(self.__events_queue)
self.__events_queue.put_nowait(event)
def run(self) -> None: # pylint: disable=too-many-branches