From 666405f346bef501a6707c4b152704f5c34246c6 Mon Sep 17 00:00:00 2001 From: Sebastian Leonhardt Date: Wed, 4 Apr 2018 16:28:53 +0200 Subject: [PATCH] Simulator: improve simulation of transflective screens This patch simulates the three possible states of a transflective LCD: backlight on (bright screen as usual), backlight off (dimmed screen) and LCD off (black screen). Makes use of already defined 'BACKLIGHT_OFF_ALPHA'. Change-Id: I9b0fc79b8d50c29e024ba1e6d9c2501119a7e0e0 --- firmware/target/hosted/sdl/lcd-bitmap.c | 8 ++++++++ uisimulator/common/lcd-common.c | 3 +++ 2 files changed, 11 insertions(+) diff --git a/firmware/target/hosted/sdl/lcd-bitmap.c b/firmware/target/hosted/sdl/lcd-bitmap.c index 5f895d802d..aefbb17b42 100644 --- a/firmware/target/hosted/sdl/lcd-bitmap.c +++ b/firmware/target/hosted/sdl/lcd-bitmap.c @@ -162,7 +162,15 @@ void sim_backlight(int value) #endif } #else /* LCD_DEPTH > 8 */ +#ifdef HAVE_TRANSFLECTIVE_LCD + if (!lcd_active()) + SDL_SetAlpha(lcd_surface, SDL_SRCALPHA, 0); + else + SDL_SetAlpha(lcd_surface, SDL_SRCALPHA, + MAX(BACKLIGHT_OFF_ALPHA, (value * 255) / 100)); +#else SDL_SetAlpha(lcd_surface, SDL_SRCALPHA, (value * 255) / 100); +#endif #endif /* LCD_DEPTH */ sdl_gui_update(lcd_surface, 0, 0, SIM_LCD_WIDTH, SIM_LCD_HEIGHT, diff --git a/uisimulator/common/lcd-common.c b/uisimulator/common/lcd-common.c index 47ca114cbc..9e01f3eda6 100644 --- a/uisimulator/common/lcd-common.c +++ b/uisimulator/common/lcd-common.c @@ -78,6 +78,9 @@ void lcd_remote_set_invert_display(bool invert) void lcd_sleep(void) { lcd_sleeping = true; +#ifdef HAVE_TRANSFLECTIVE_LCD + sim_backlight(0); /* completely blacken the screen */ +#endif } void lcd_awake(void)