File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,6 +13,9 @@ SSD1306 monochrome OLED display.
1313- Implement ` embedded_graphics::draw_target::DrawTarget::fill_contiguous ` to more improve performance when filling
1414 contiguous regions.
1515
16+ ### Changed
17+ - Improved interface utilisation when the buffer to be sent is contiguous.
18+
1619## [ 0.10.0] - 2025-03-22
1720### Changed
1821- Added ` DisplaySize64x32 ` to the prelude
Original file line number Diff line number Diff line change @@ -502,15 +502,25 @@ where
502502 let page_lower = upper_left. 0 as usize ;
503503 let page_upper = lower_right. 0 as usize ;
504504
505- for c in buffer
506- . chunks ( disp_width)
507- . skip ( starting_page)
508- . take ( num_pages)
509- . map ( |s| & s[ page_lower..page_upper] )
510- {
511- interface. send_data ( U8 ( c) ) . await ?
505+ let is_contiguous = page_lower == 0 && page_upper == SIZE :: WIDTH as usize ;
506+
507+ if is_contiguous {
508+ interface
509+ . send_data ( U8 (
510+ & buffer[ starting_page * disp_width..] [ ..num_pages * disp_width]
511+ ) )
512+ . await
513+ } else {
514+ for c in buffer
515+ . chunks ( disp_width)
516+ . skip ( starting_page)
517+ . take ( num_pages)
518+ . map ( |s| & s[ page_lower..page_upper] )
519+ {
520+ interface. send_data ( U8 ( c) ) . await ?;
521+ }
522+ Ok ( ( ) )
512523 }
513- Ok ( ( ) )
514524 }
515525
516526 /// Release the contained interface.
You can’t perform that action at this time.
0 commit comments