From 741cd9c40a4b3368ffa92286498883bd29b0fb70 Mon Sep 17 00:00:00 2001 From: Dave Astels Date: Wed, 31 Jul 2019 12:47:32 -0400 Subject: [PATCH] Get fill_area working --- shared-bindings/displayio/Display.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/shared-bindings/displayio/Display.c b/shared-bindings/displayio/Display.c index 2b9c740666..6338fe459a 100644 --- a/shared-bindings/displayio/Display.c +++ b/shared-bindings/displayio/Display.c @@ -451,9 +451,15 @@ STATIC mp_obj_t displayio_display_obj_fill_area(size_t n_args, const mp_obj_t *p displayio_display_fill_area(self, &area, mask, buffer); - mp_obj_array_t *result = array_new(BYTEARRAY_TYPECODE, buffer_size); - for (int offset = 0; offset < buffer_size; offset++) { - array_subscr(result, MP_OBJ_NEW_SMALL_INT(offset), MP_OBJ_NEW_SMALL_INT(buffer[offset])); + mp_obj_array_t *result = array_new(BYTEARRAY_TYPECODE, buffer_size * 4); + int byte_offset = 0; + for (int word_offset = 0; word_offset < buffer_size; word_offset++) { + uint32_t word = buffer[word_offset]; + for (int byte_count = 0; byte_count < 4; byte_count++) { + array_subscr(result, MP_OBJ_NEW_SMALL_INT(byte_offset), MP_OBJ_NEW_SMALL_INT(word & 0x000000FF)); + word >>= 8; + byte_offset++; + } } return result; }