MCPcopy Index your code
hub / github.com/endbasic/endbasic / force_present_canvas

Method force_present_canvas

std/src/gfx/lcd/buffered/mod.rs:300–326  ·  view source on GitHub ↗

Flushes any pending damaged area to the LCD.

(&mut self)

Source from the content-addressed store, hash-verified

298
299 /// Flushes any pending damaged area to the LCD.
300 fn force_present_canvas(&mut self) -> io::Result<()> {
301 let (x1y1, x2y2) = match self.damage {
302 None => return Ok(()),
303 Some(damage) => damage,
304 };
305
306 let mut data = LcdSize::between(x1y1, x2y2).new_buffer(self.stride);
307 for y in x1y1.y..(x2y2.y + 1) {
308 for x in x1y1.x..(x2y2.x + 1) {
309 let offset = self.fb_addr(x, y);
310 data.extend_from_slice(&self.fb[offset..offset + self.stride]);
311 }
312 }
313 debug_assert_eq!(
314 {
315 let (_xy, size) = to_xy_size(x1y1, x2y2);
316 size.width * size.height * self.stride
317 },
318 data.len()
319 );
320
321 self.lcd.set_data(x1y1, x2y2, &data)?;
322
323 self.damage = None;
324
325 Ok(())
326 }
327}
328
329impl<L> Drop for BufferedLcd<L>

Callers 4

without_syncMethod · 0.80
present_canvasMethod · 0.80

Calls 3

new_bufferMethod · 0.80
fb_addrMethod · 0.80
set_dataMethod · 0.45