fix vnc substract overflow

This commit is contained in:
Jovi Hsu 2021-11-15 18:49:27 +08:00
parent 2de7b4b9ec
commit 85abc9d7f8

View File

@ -1,5 +1,3 @@
use super::common::*;
use super::des;
use yew::services::ConsoleService;
@ -74,12 +72,12 @@ impl ProtocalImpl for VncHandler {
fn do_input(&mut self, input: Vec<u8>) {
self.buf_num += input.len();
ConsoleService::info(&format!(
"VNC input {}, left {}, require {}",
input.len(),
self.buf_num,
self.require
));
// ConsoleService::info(&format!(
// "VNC input {}, left {}, require {}",
// input.len(),
// self.buf_num,
// self.require
// ));
self.reader.append(input);
while self.buf_num >= self.require {
self.handle_input();
@ -326,8 +324,8 @@ impl VncHandler {
fn handle_framebuffer_update(&mut self) {
let _padding = self.read_u8();
self.num_rects_left = self.read_u16();
ConsoleService::log(&format!("VNC: {} rects", self.num_rects_left));
self.require = 12; // the length of the first rectangle
// ConsoleService::log(&format!("VNC: {} rects", self.num_rects_left));
self.require = 12; // the length of the first rectangle hdr
}
//Each rectangle consists of:
@ -386,12 +384,15 @@ impl VncHandler {
data: image_data,
}));
self.num_rects_left -= 1;
}
if 0 == self.num_rects_left {
self.during_update = false;
self.require = 1;
} else {
self.require = 12; // the length of the next rectangle hdr
}
ConsoleService::log(&format!("{} rects left", self.num_rects_left));
}
// ConsoleService::log(&format!("{} rects left", self.num_rects_left));
}
fn handle_set_colour_map(&mut self) {