summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAidan MacDonald <amachronic@protonmail.com>2024-03-30 15:16:49 +0000
committerAidan MacDonald <amachronic@protonmail.com>2024-03-31 11:36:16 -0400
commit5fd5f56cacdd82ae10fb33496525e1614bcc0dd8 (patch)
tree8604d89e43c2094a0e01008dc2c4c51a38d4bc33
parentb0a8cacd1dd11dbf6f8f7b46675d89e5b5b32920 (diff)
downloadrockbox-5fd5f56cac.tar.gz
rockbox-5fd5f56cac.zip
Disable unused LCD scroll functions in bootloaders
These functions just reset some state related to the scroll engine, which is already disabled for bootloaders. They get called from the LCD code and compiled into the binary, but have no real effect when the rest of the scroll engine is not present. Replacing the calls with inline stubs gets rid of this dead code from bootloaders. Change-Id: I12a6d8926e19477ae3a5913e7fc8aff41cecd970
-rw-r--r--firmware/drivers/lcd-scroll.c2
-rw-r--r--firmware/export/scroll_engine.h26
2 files changed, 27 insertions, 1 deletions
diff --git a/firmware/drivers/lcd-scroll.c b/firmware/drivers/lcd-scroll.c
index 26b15732cd..895cf98cba 100644
--- a/firmware/drivers/lcd-scroll.c
+++ b/firmware/drivers/lcd-scroll.c
@@ -30,6 +30,7 @@
#define MAIN_LCD
#endif
+#if !defined(BOOTLOADER)
static struct scrollinfo LCDFN(scroll)[LCDM(SCROLLABLE_LINES)];
struct scroll_screen_info LCDFN(scroll_info) =
@@ -180,7 +181,6 @@ bool LCDFN(scroll_now)(struct scrollinfo *s)
return ended;
}
-#if !defined(BOOTLOADER)
static void LCDFN(scroll_worker)(void)
{
int index;
diff --git a/firmware/export/scroll_engine.h b/firmware/export/scroll_engine.h
index f13e2efca7..2a1a510dbd 100644
--- a/firmware/export/scroll_engine.h
+++ b/firmware/export/scroll_engine.h
@@ -38,10 +38,36 @@ extern void lcd_bidir_scroll(int threshold);
extern void lcd_scroll_speed(int speed);
extern void lcd_scroll_delay(int ms);
+#ifdef BOOTLOADER
+static inline void lcd_scroll_stop(void)
+{
+}
+
+static inline void lcd_scroll_stop_viewport(const struct viewport *vp)
+{
+ (void)vp;
+}
+
+static inline void lcd_scroll_stop_viewport_rect(const struct viewport *vp, int x, int y, int width, int height)
+{
+ (void)vp;
+ (void)x;
+ (void)y;
+ (void)width;
+ (void)height;
+}
+
+static inline bool lcd_scroll_now(struct scrollinfo *scroll)
+{
+ (void)scroll;
+ return false;
+}
+#else
extern void lcd_scroll_stop(void);
extern void lcd_scroll_stop_viewport(const struct viewport *vp);
extern void lcd_scroll_stop_viewport_rect(const struct viewport *vp, int x, int y, int width, int height);
extern bool lcd_scroll_now(struct scrollinfo *scroll);
+#endif
#ifdef HAVE_REMOTE_LCD
extern void lcd_remote_scroll_speed(int speed);
extern void lcd_remote_scroll_delay(int ms);