diff --git a/firmware/drivers/lcd-16bit.c b/firmware/drivers/lcd-16bit.c index a4ae6cd553..4ec9ddbac9 100644 --- a/firmware/drivers/lcd-16bit.c +++ b/firmware/drivers/lcd-16bit.c @@ -765,9 +765,11 @@ static void scroll_thread(void) } } else { - /* scroll forward the whole time */ - if (s->offset >= s->width) - s->offset %= s->width; + /* pause at beginning of line */ + if (s->offset >= s->width) { + s->offset = 0; + s->start_tick = current_tick + scroll_delay * 2; + } } lastmode = drawmode; diff --git a/firmware/drivers/lcd-h100-remote.c b/firmware/drivers/lcd-h100-remote.c index 33a8b3790d..98da42710f 100644 --- a/firmware/drivers/lcd-h100-remote.c +++ b/firmware/drivers/lcd-h100-remote.c @@ -1323,9 +1323,11 @@ static void scroll_thread(void) } } else { - /* scroll forward the whole time */ - if (s->offset >= s->width) - s->offset %= s->width; + /* pause at beginning of line */ + if (s->offset >= s->width) { + s->offset = 0; + s->start_tick = current_tick + scroll_delay * 2; + } } lastmode = drawmode; diff --git a/firmware/drivers/lcd-h100.c b/firmware/drivers/lcd-h100.c index ba959d23de..739e4b2862 100644 --- a/firmware/drivers/lcd-h100.c +++ b/firmware/drivers/lcd-h100.c @@ -1236,9 +1236,11 @@ static void scroll_thread(void) } } else { - /* scroll forward the whole time */ - if (s->offset >= s->width) - s->offset %= s->width; + /* pause at beginning of line */ + if (s->offset >= s->width) { + s->offset = 0; + s->start_tick = current_tick + scroll_delay * 2; + } } lastmode = drawmode; diff --git a/firmware/drivers/lcd-recorder.c b/firmware/drivers/lcd-recorder.c index 7e064b8001..a29257342e 100644 --- a/firmware/drivers/lcd-recorder.c +++ b/firmware/drivers/lcd-recorder.c @@ -1065,9 +1065,11 @@ static void scroll_thread(void) } } else { - /* scroll forward the whole time */ - if (s->offset >= s->width) - s->offset %= s->width; + /* pause at beginning of line */ + if (s->offset >= s->width) { + s->offset = 0; + s->start_tick = current_tick + scroll_delay * 2; + } } lastmode = drawmode;