summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buffer.rs27
-rw-r--r--src/main.rs2
2 files changed, 19 insertions, 10 deletions
diff --git a/src/buffer.rs b/src/buffer.rs
index 999a32c..6d983db 100644
--- a/src/buffer.rs
+++ b/src/buffer.rs
@@ -60,16 +60,23 @@ impl Buffer {
fn render(&mut self) -> std::io::Result<()> {
puffin::profile_function!();
- self.cells.sort_unstable_by_key(|cell| cell.z);
- queue!(self.stdout, BeginSynchronizedUpdate, Clear(ClearType::All))?;
- for cell in &self.cells {
- queue!(
- self.stdout,
- MoveTo(cell.x, cell.y),
- PrintStyledContent(StyledContent::new(cell.style, cell.character))
- )?;
+ {
+ puffin::profile_scope!("sort cells");
+ self.cells.sort_unstable_by_key(|cell| cell.z);
}
- queue!(self.stdout, EndSynchronizedUpdate)?;
+ {
+ puffin::profile_scope!("queue");
+ queue!(self.stdout, BeginSynchronizedUpdate, Clear(ClearType::All))?;
+ for cell in &self.cells {
+ queue!(
+ self.stdout,
+ MoveTo(cell.x, cell.y),
+ PrintStyledContent(StyledContent::new(cell.style, cell.character))
+ )?;
+ }
+ queue!(self.stdout, EndSynchronizedUpdate)?;
+ }
+ puffin::profile_scope!("flush");
self.stdout.flush()?;
Ok(())
}
@@ -96,6 +103,7 @@ impl Buffer {
}
});
loop {
+ puffin::profile_scope!("frame");
while let Ok(event) = receiver.try_recv() {
if let Ok(event) = event.try_into() {
event_handler(self, event);
@@ -103,6 +111,7 @@ impl Buffer {
}
event_handler(self, Event::Render);
self.render()?;
+ puffin::GlobalProfiler::lock().new_frame();
}
})?;
self.finish()?;
diff --git a/src/main.rs b/src/main.rs
index 1a62ca2..baea403 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -34,6 +34,7 @@ fn render_frame_rate(ctx: &mut ScriptContext, state: &mut Box<[u8]>) {
frame_time % 100 / 10,
frame_time % 10,
];
+ ctx.buffer.cells.clear();
for (x, digit) in digits.into_iter().enumerate() {
ctx.buffer.cells.push(Cell {
character: char::from_digit(digit as u32, 10).unwrap(),
@@ -110,7 +111,6 @@ fn main() {
};
scripts.run_scripts(&mut context, &wasm_runner, &mut files);
input.reset_next_frame();
- puffin::GlobalProfiler::lock().new_frame();
}
})
.unwrap();