mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
memory link fix
This commit is contained in:
parent
ffeb626ef8
commit
dfb952e421
@ -139,7 +139,7 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
|
|||||||
await self._run(
|
await self._run(
|
||||||
kvmd=self.__kvmd_task_loop(),
|
kvmd=self.__kvmd_task_loop(),
|
||||||
streamer=self.__streamer_task_loop(),
|
streamer=self.__streamer_task_loop(),
|
||||||
fb_sendeer=self.__fb_sender_task_loop(),
|
fb_sender=self.__fb_sender_task_loop(),
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
if self.__kvmd_session:
|
if self.__kvmd_session:
|
||||||
@ -200,16 +200,16 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
|
|||||||
logger.info("[streamer] %s: Streaming ...", self._remote)
|
logger.info("[streamer] %s: Streaming ...", self._remote)
|
||||||
streaming = True
|
streaming = True
|
||||||
if frame["online"]:
|
if frame["online"]:
|
||||||
await self.__queue_fb_real(frame)
|
await self.__queue_frame(frame)
|
||||||
else:
|
else:
|
||||||
await self.__queue_fb_stub("No signal")
|
await self.__queue_frame("No signal")
|
||||||
except StreamerError as err:
|
except StreamerError as err:
|
||||||
if isinstance(err, StreamerPermError):
|
if isinstance(err, StreamerPermError):
|
||||||
streamer = self.__get_default_streamer()
|
streamer = self.__get_default_streamer()
|
||||||
logger.info("[streamer] %s: Permanent error: %s; switching to %s ...", self._remote, err, streamer)
|
logger.info("[streamer] %s: Permanent error: %s; switching to %s ...", self._remote, err, streamer)
|
||||||
else:
|
else:
|
||||||
logger.info("[streamer] %s: Waiting for stream: %s", self._remote, err)
|
logger.info("[streamer] %s: Waiting for stream: %s", self._remote, err)
|
||||||
await self.__queue_fb_stub("Waiting for stream ...")
|
await self.__queue_frame("Waiting for stream ...")
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
def __get_preferred_streamer(self) -> BaseStreamerClient:
|
def __get_preferred_streamer(self) -> BaseStreamerClient:
|
||||||
@ -229,13 +229,12 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
|
|||||||
get_logger(0).info("[streamer] %s: Using default %s", self._remote, streamer)
|
get_logger(0).info("[streamer] %s: Using default %s", self._remote, streamer)
|
||||||
return streamer
|
return streamer
|
||||||
|
|
||||||
async def __queue_fb_real(self, frame: Dict) -> None:
|
async def __queue_frame(self, frame: Union[Dict, str]) -> None:
|
||||||
await self.__fb_queue.put(frame)
|
if isinstance(frame, str):
|
||||||
|
frame = await self.__make_text_frame(frame)
|
||||||
|
self.__fb_queue.put_nowait(frame)
|
||||||
|
|
||||||
async def __queue_fb_stub(self, text: str) -> None:
|
async def __make_text_frame(self, text: str) -> Dict:
|
||||||
await self.__fb_queue.put(await self.__make_stub_frame(text))
|
|
||||||
|
|
||||||
async def __make_stub_frame(self, text: str) -> Dict:
|
|
||||||
return {
|
return {
|
||||||
"data": (await make_text_jpeg(self._width, self._height, self._encodings.tight_jpeg_quality, text)),
|
"data": (await make_text_jpeg(self._width, self._height, self._encodings.tight_jpeg_quality, text)),
|
||||||
"width": self._width,
|
"width": self._width,
|
||||||
@ -261,7 +260,7 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
|
|||||||
or len(last["data"]) + len(frame["data"]) > 4194304
|
or len(last["data"]) + len(frame["data"]) > 4194304
|
||||||
))
|
))
|
||||||
):
|
):
|
||||||
last = frame
|
last = dict(frame)
|
||||||
if self.__fb_queue.qsize() == 0:
|
if self.__fb_queue.qsize() == 0:
|
||||||
break
|
break
|
||||||
continue
|
continue
|
||||||
@ -279,7 +278,7 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
|
|||||||
f"Resoultion changed: {self._width}x{self._height}"
|
f"Resoultion changed: {self._width}x{self._height}"
|
||||||
f" -> {last['width']}x{last['height']}\nPlease reconnect"
|
f" -> {last['width']}x{last['height']}\nPlease reconnect"
|
||||||
)
|
)
|
||||||
await self._send_fb_jpeg(await self.__make_stub_frame(msg))
|
await self._send_fb_jpeg((await self.__make_text_frame(msg))["data"])
|
||||||
return
|
return
|
||||||
await self._send_resize(last["width"], last["height"])
|
await self._send_resize(last["width"], last["height"])
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user