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 server_file_transfer_enabled =
|
||||
*self.handler.server_file_transfer_enabled.read().unwrap();
|
||||
let file_transfer_enabled = self
|
||||
.handler
|
||||
.lc
|
||||
.read()
|
||||
.unwrap()
|
||||
.enable_file_copy_paste
|
||||
.v;
|
||||
let file_transfer_enabled =
|
||||
self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||
let view_only = self.handler.lc.read().unwrap().view_only.v;
|
||||
let stop = is_stopping_allowed
|
||||
&& (view_only
|
||||
@ -1032,13 +1027,15 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
ctl.last_auto_fps = Some(auto_fps);
|
||||
}
|
||||
// send refresh
|
||||
let tolerable = std::cmp::min(decode_fps, video_queue.capacity() / 2);
|
||||
if ctl.refresh_times < 10 // enough
|
||||
&& (len > video_queue.capacity() / 2
|
||||
&& (ctl.refresh_times == 0 || ctl.last_refresh_instant.elapsed().as_secs() > 30))
|
||||
&& (len > tolerable
|
||||
&& (ctl.refresh_times == 0 || ctl.last_refresh_instant.elapsed().as_secs() > 10))
|
||||
{
|
||||
// Refresh causes client set_display, left frames cause flickering.
|
||||
while let Some(_) = video_queue.pop() {}
|
||||
self.handler.refresh_video(*display as _);
|
||||
log::info!("Refresh display {} to reduce delay", display);
|
||||
ctl.refresh_times += 1;
|
||||
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()
|
||||
&& self
|
||||
.handler
|
||||
.lc
|
||||
.read()
|
||||
.unwrap()
|
||||
.enable_file_copy_paste
|
||||
.v;
|
||||
&& self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||
ContextSend::enable(enabled);
|
||||
}
|
||||
}
|
||||
@ -1794,13 +1785,7 @@ impl<T: InvokeUiSession> Remote<T> {
|
||||
};
|
||||
|
||||
let is_stopping_allowed = clip.is_stopping_allowed_from_peer();
|
||||
let file_transfer_enabled = self
|
||||
.handler
|
||||
.lc
|
||||
.read()
|
||||
.unwrap()
|
||||
.enable_file_copy_paste
|
||||
.v;
|
||||
let file_transfer_enabled = self.handler.lc.read().unwrap().enable_file_copy_paste.v;
|
||||
let stop = is_stopping_allowed && !file_transfer_enabled;
|
||||
log::debug!(
|
||||
"Process clipboard message from server peer, stop: {}, is_stopping_allowed: {}, file_transfer_enabled: {}",
|
||||
|
Loading…
x
Reference in New Issue
Block a user