aboutsummaryrefslogtreecommitdiff
path: root/src/server/render_stream.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/render_stream.rs')
-rw-r--r--src/server/render_stream.rs23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/server/render_stream.rs b/src/server/render_stream.rs
index 3548f98a..97baf38d 100644
--- a/src/server/render_stream.rs
+++ b/src/server/render_stream.rs
@@ -45,8 +45,10 @@ impl ClientRenderState {
match self {
Self::Semantic { last_frame } => {
if last_frame.as_ref() == Some(frame) {
+ crate::render_prof::event("prepare_frame.semantic.skip_current");
return None;
}
+ crate::render_prof::event("prepare_frame.semantic.changed");
Some(PreparedRender {
message: ServerMessage::Frame(frame.clone()),
encoded: None,
@@ -54,10 +56,22 @@ impl ClientRenderState {
}
Self::TerminalAnsi { blit_encoder, seq } => {
if blit_encoder.is_current(frame) {
+ crate::render_prof::event("prepare_frame.ansi.skip_current");
return None;
}
let mut encoded = blit_encoder.encode(frame, false);
+ crate::render_prof::event("prepare_frame.ansi.changed");
+ crate::render_prof::counter("prepare_frame.ansi.bytes", encoded.bytes.len() as u64);
+ if encoded.full {
+ crate::render_prof::event("prepare_frame.ansi.full");
+ } else {
+ crate::render_prof::event("prepare_frame.ansi.partial");
+ }
insert_graphics_before_sync_end(&mut encoded.bytes, &frame.graphics);
+ crate::render_prof::counter(
+ "prepare_frame.graphics.bytes",
+ frame.graphics.len() as u64,
+ );
Some(PreparedRender {
message: ServerMessage::Terminal(TerminalFrame {
seq: *seq + 1,
@@ -72,6 +86,13 @@ impl ClientRenderState {
}
}
+ pub(crate) fn last_frame(&self) -> Option<&FrameData> {
+ match self {
+ Self::Semantic { last_frame } => last_frame.as_ref(),
+ Self::TerminalAnsi { blit_encoder, .. } => blit_encoder.last_frame(),
+ }
+ }
+
pub(crate) fn commit_sent_frame(&mut self, frame: FrameData, prepared: PreparedRender) {
match (self, prepared.encoded) {
(Self::Semantic { last_frame }, None) => *last_frame = Some(frame),
@@ -316,7 +337,7 @@ pub(crate) fn visible_hyperlinks(
links
}
-fn focused_terminal_cursor(
+pub(crate) fn focused_terminal_cursor(
app_state: &AppState,
terminal_runtimes: &TerminalRuntimeRegistry,
) -> Option<CursorState> {