diff options
author | Devaev Maxim <[email protected]> | 2020-03-20 04:47:21 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-03-20 11:39:22 +0300 |
commit | 8164594b920c6b0c5bc7554621c20165298e3d57 (patch) | |
tree | f24b19fad5eddb682a1ba3dc8fe3847d58deda06 /kvmd/apps | |
parent | 0ac8b0c3e478b24b689025bd52de93bf20357c9f (diff) |
minor vnc fixes
Diffstat (limited to 'kvmd/apps')
-rw-r--r-- | kvmd/apps/vnc/rfb.py | 6 | ||||
-rw-r--r-- | kvmd/apps/vnc/server.py | 47 |
2 files changed, 27 insertions, 26 deletions
diff --git a/kvmd/apps/vnc/rfb.py b/kvmd/apps/vnc/rfb.py index 450024c4..08c68a4c 100644 --- a/kvmd/apps/vnc/rfb.py +++ b/kvmd/apps/vnc/rfb.py @@ -352,12 +352,12 @@ class RfbClient: # pylint: disable=too-many-instance-attributes "middle": bool(buttons & 0x2), }, wheel={ - "x": (32 if buttons & 0x40 else (-32 if buttons & 0x20 else 0)), - "y": (32 if buttons & 0x10 else (-32 if buttons & 0x8 else 0)), + "x": (-4 if buttons & 0x40 else (4 if buttons & 0x20 else 0)), + "y": (-4 if buttons & 0x10 else (4 if buttons & 0x8 else 0)), }, move={ "x": round(to_x / self._width * 65535 + -32768), - "y": round(to_y / self._width * 65535 + -32768), + "y": round(to_y / self._height * 65535 + -32768), }, ) diff --git a/kvmd/apps/vnc/server.py b/kvmd/apps/vnc/server.py index d9225f3b..adf6f32d 100644 --- a/kvmd/apps/vnc/server.py +++ b/kvmd/apps/vnc/server.py @@ -24,6 +24,7 @@ import asyncio import asyncio.queues import socket import dataclasses +import contextlib import json from typing import Dict @@ -281,31 +282,31 @@ class VncServer: logger = get_logger(0) logger.info("Listening VNC on TCP [%s]:%d ...", self.__host, self.__port) - sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) - sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, False) - sock.bind((self.__host, self.__port)) + with contextlib.closing(socket.socket(socket.AF_INET6, socket.SOCK_STREAM)) as sock: + sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_V6ONLY, False) + sock.bind((self.__host, self.__port)) - loop = asyncio.get_event_loop() - server = loop.run_until_complete(asyncio.start_server( - client_connected_cb=self.__handle_client, - sock=sock, - backlog=self.__max_clients, - loop=loop, - )) + loop = asyncio.get_event_loop() + server = loop.run_until_complete(asyncio.start_server( + client_connected_cb=self.__handle_client, + sock=sock, + backlog=self.__max_clients, + loop=loop, + )) - try: - loop.run_forever() - except (SystemExit, KeyboardInterrupt): - pass - finally: - server.close() - loop.run_until_complete(server.wait_closed()) - tasks = asyncio.Task.all_tasks() - for task in tasks: - task.cancel() - loop.run_until_complete(asyncio.gather(*tasks, return_exceptions=True)) - loop.close() - logger.info("Bye-bye") + try: + loop.run_forever() + except (SystemExit, KeyboardInterrupt): + pass + finally: + server.close() + loop.run_until_complete(server.wait_closed()) + tasks = asyncio.Task.all_tasks() + for task in tasks: + task.cancel() + loop.run_until_complete(asyncio.gather(*tasks, return_exceptions=True)) + loop.close() + logger.info("Bye-bye") async def __handle_client(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None: await _Client(reader, writer, self.__kvmd, self.__streamer, self.__symmap, self.__shared_params).run() |