diff options
| author | Dan Halbert <halbert@halwitz.org> | 2019-03-07 00:08:16 -0500 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2019-03-07 00:08:16 -0500 |
| commit | 1f31877d5519813f94feabf3aedfd21e9461ce17 (patch) | |
| tree | 70a2f86ec0d856ca5c4f770853ce9a010adcd4fd /shared-module/displayio/Display.c | |
| parent | c854f6617a0b343333635fe0cc91419daff7cdd5 (diff) | |
Rework background display task to allow reads from SPI SD card during display. Clarify code. Handle multiple displays better.
Diffstat (limited to 'shared-module/displayio/Display.c')
| -rw-r--r-- | shared-module/displayio/Display.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/shared-module/displayio/Display.c b/shared-module/displayio/Display.c index 2f2ba0665..0e76a868f 100644 --- a/shared-module/displayio/Display.c +++ b/shared-module/displayio/Display.c @@ -202,14 +202,16 @@ bool common_hal_displayio_display_set_brightness(displayio_display_obj_t* self, return ok; } -// This routine is meant to be called as a background task. If it cannot acquire the display bus, -// it will return false immediately to indicate it didn't do anything. -bool displayio_display_start_region_update(displayio_display_obj_t* self, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { +bool displayio_display_begin_transaction(displayio_display_obj_t* self) { + return self->begin_transaction(self->bus); +} + +void displayio_display_end_transaction(displayio_display_obj_t* self) { + self->end_transaction(self->bus); +} + +void displayio_display_set_region_to_update(displayio_display_obj_t* self, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { // TODO(tannewt): Handle displays with single byte bounds. - if (!self->begin_transaction(self->bus)) { - // Could not acquire the bus; give up. - return false; - } uint16_t data[2]; self->send(self->bus, true, &self->set_column_command, 1); data[0] = __builtin_bswap16(x0 + self->colstart); @@ -220,11 +222,6 @@ bool displayio_display_start_region_update(displayio_display_obj_t* self, uint16 data[1] = __builtin_bswap16(y1 - 1 + self->rowstart); self->send(self->bus, false, (uint8_t*) data, 4); self->send(self->bus, true, &self->write_ram_command, 1); - return true; -} - -void displayio_display_finish_region_update(displayio_display_obj_t* self) { - self->end_transaction(self->bus); } bool displayio_display_frame_queued(displayio_display_obj_t* self) { @@ -244,9 +241,8 @@ void displayio_display_finish_refresh(displayio_display_obj_t* self) { self->last_refresh = ticks_ms; } -bool displayio_display_send_pixels(displayio_display_obj_t* self, uint32_t* pixels, uint32_t length) { +void displayio_display_send_pixels(displayio_display_obj_t* self, uint32_t* pixels, uint32_t length) { self->send(self->bus, false, (uint8_t*) pixels, length * 4); - return true; } void displayio_display_update_backlight(displayio_display_obj_t* self) { |
