From fede96edc958de9c79a761e5dd5dd2f3f9f557f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Wed, 16 Jun 2021 10:17:55 +0200 Subject: [PATCH] refactor: add option to clear display without render --- image-viewer/include/display_utils.h | 3 ++- image-viewer/src/display_utils.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/image-viewer/include/display_utils.h b/image-viewer/include/display_utils.h index a8d8c88..4f1484d 100644 --- a/image-viewer/include/display_utils.h +++ b/image-viewer/include/display_utils.h @@ -2,6 +2,7 @@ #define __DISPLAY_UTILS_H__ #include +#include #define DISPLAY_MAX_RED 31u #define DISPLAY_MAX_GREEN 63u @@ -53,7 +54,7 @@ display_t display_init(display_data_t data); void display_deinit(display_t *display); void display_render(display_t *display); -void display_clear(display_t *display); +void display_clear(display_t *display, bool render); display_pixel_t display_get_pixel(display_t *display, uint16_t x, uint16_t y); void display_set_pixel(display_t *display, uint16_t x, uint16_t y, diff --git a/image-viewer/src/display_utils.c b/image-viewer/src/display_utils.c index 321704b..ff4e74e 100644 --- a/image-viewer/src/display_utils.c +++ b/image-viewer/src/display_utils.c @@ -5,6 +5,7 @@ #ifdef COMPUTER #include "xwin_sdl.h" #endif + const display_pixel_t BLACK_PIXEL = {.bits = 0}; const display_pixel_t WHITE_PIXEL = {.bits = 0xFFFF}; @@ -50,12 +51,13 @@ display_t display_init(display_data_t data) { if (data.base_address != NULL) { parlcd_hx8357_init(data.base_address); - display_clear(&display); + display_clear(&display, true); } #ifdef COMPUTER xwin_init(DISPLAY_WIDTH, DISPLAY_HEIGHT); #endif + return display; } void display_deinit(display_t *display) { @@ -84,19 +86,19 @@ void display_render(display_t *display) { for (int i = 0; i < count; i++) { parlcd_write_data(display->data.base_address, display->pixels[i].bits); } + #endif } -void display_clear(display_t *display) { - if (display->data.base_address == NULL) { - return; - } +void display_clear(display_t *display, bool render) { int count = DISPLAY_HEIGHT * DISPLAY_WIDTH; for (int i = 0; i < count; i++) { display->pixels[i] = BLACK_PIXEL; } - display_render(display); + if (render) { + display_render(display); + } } display_pixel_t display_get_pixel(display_t *display, uint16_t x, uint16_t y) { -- 2.48.1