impore fps control, quicker send refresh and clear video queue (#8137)
Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
parent
902e166f0c
commit
17d18f1dd8
@ -319,13 +319,8 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
let is_stopping_allowed = clip.is_stopping_allowed();
|
let is_stopping_allowed = clip.is_stopping_allowed();
|
||||||
let server_file_transfer_enabled =
|
let server_file_transfer_enabled =
|
||||||
*self.handler.server_file_transfer_enabled.read().unwrap();
|
*self.handler.server_file_transfer_enabled.read().unwrap();
|
||||||
let file_transfer_enabled = self
|
let file_transfer_enabled =
|
||||||
.handler
|
self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||||
.lc
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.enable_file_copy_paste
|
|
||||||
.v;
|
|
||||||
let view_only = self.handler.lc.read().unwrap().view_only.v;
|
let view_only = self.handler.lc.read().unwrap().view_only.v;
|
||||||
let stop = is_stopping_allowed
|
let stop = is_stopping_allowed
|
||||||
&& (view_only
|
&& (view_only
|
||||||
@ -1032,13 +1027,15 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
ctl.last_auto_fps = Some(auto_fps);
|
ctl.last_auto_fps = Some(auto_fps);
|
||||||
}
|
}
|
||||||
// send refresh
|
// send refresh
|
||||||
|
let tolerable = std::cmp::min(decode_fps, video_queue.capacity() / 2);
|
||||||
if ctl.refresh_times < 10 // enough
|
if ctl.refresh_times < 10 // enough
|
||||||
&& (len > video_queue.capacity() / 2
|
&& (len > tolerable
|
||||||
&& (ctl.refresh_times == 0 || ctl.last_refresh_instant.elapsed().as_secs() > 30))
|
&& (ctl.refresh_times == 0 || ctl.last_refresh_instant.elapsed().as_secs() > 10))
|
||||||
{
|
{
|
||||||
// Refresh causes client set_display, left frames cause flickering.
|
// Refresh causes client set_display, left frames cause flickering.
|
||||||
while let Some(_) = video_queue.pop() {}
|
while let Some(_) = video_queue.pop() {}
|
||||||
self.handler.refresh_video(*display as _);
|
self.handler.refresh_video(*display as _);
|
||||||
|
log::info!("Refresh display {} to reduce delay", display);
|
||||||
ctl.refresh_times += 1;
|
ctl.refresh_times += 1;
|
||||||
ctl.last_refresh_instant = Instant::now();
|
ctl.last_refresh_instant = Instant::now();
|
||||||
}
|
}
|
||||||
@ -1765,13 +1762,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
))]
|
))]
|
||||||
{
|
{
|
||||||
let enabled = *self.handler.server_file_transfer_enabled.read().unwrap()
|
let enabled = *self.handler.server_file_transfer_enabled.read().unwrap()
|
||||||
&& self
|
&& self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||||
.handler
|
|
||||||
.lc
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.enable_file_copy_paste
|
|
||||||
.v;
|
|
||||||
ContextSend::enable(enabled);
|
ContextSend::enable(enabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1794,13 +1785,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let is_stopping_allowed = clip.is_stopping_allowed_from_peer();
|
let is_stopping_allowed = clip.is_stopping_allowed_from_peer();
|
||||||
let file_transfer_enabled = self
|
let file_transfer_enabled = self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||||
.handler
|
|
||||||
.lc
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.enable_file_copy_paste
|
|
||||||
.v;
|
|
||||||
let stop = is_stopping_allowed && !file_transfer_enabled;
|
let stop = is_stopping_allowed && !file_transfer_enabled;
|
||||||
log::debug!(
|
log::debug!(
|
||||||
"Process clipboard message from server peer, stop: {}, is_stopping_allowed: {}, file_transfer_enabled: {}",
|
"Process clipboard message from server peer, stop: {}, is_stopping_allowed: {}, file_transfer_enabled: {}",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user