diff options
Diffstat (limited to 'firmware/drivers')
-rw-r--r-- | firmware/drivers/lcd-player.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/firmware/drivers/lcd-player.c b/firmware/drivers/lcd-player.c index bbb157a94f..3344a7478a 100644 --- a/firmware/drivers/lcd-player.c +++ b/firmware/drivers/lcd-player.c | |||
@@ -626,12 +626,27 @@ static void scroll_thread(void) | |||
626 | int jumping_scroll=s->jump_scroll; | 626 | int jumping_scroll=s->jump_scroll; |
627 | update = true; | 627 | update = true; |
628 | if (s->jump_scroll) { | 628 | if (s->jump_scroll) { |
629 | s->offset+=s->jump_scroll_steps; | 629 | |
630 | /* Find new position to start jump scroll by | ||
631 | * finding last white space within | ||
632 | * jump_scroll_steps */ | ||
633 | int i; | ||
634 | o = s->offset = s->offset + s->jump_scroll_steps; | ||
635 | for (i = 0; i < s->jump_scroll_steps; i++, o--) { | ||
636 | if (o < s->textlen && | ||
637 | ((0x20 <= s->text[o] && s->text[o] <= 0x2f) || s->text[o] == '_')) | ||
638 | { | ||
639 | s->offset = o; | ||
640 | break; | ||
641 | } | ||
642 | } | ||
643 | |||
630 | s->scroll_start_tick = current_tick + | 644 | s->scroll_start_tick = current_tick + |
631 | jump_scroll_delay; | 645 | jump_scroll_delay; |
632 | /* Eat space */ | 646 | /* Eat space */ |
633 | while (s->offset < s->textlen && | 647 | while (s->offset < s->textlen && |
634 | s->text[s->offset] == ' ') { | 648 | ((0x20 <= s->text[s->offset] && s->text[s->offset] <= 0x2f) || |
649 | s->text[s->offset] == '_')) { | ||
635 | s->offset++; | 650 | s->offset++; |
636 | } | 651 | } |
637 | if (s->offset >= s->textlen) { | 652 | if (s->offset >= s->textlen) { |
@@ -667,7 +682,7 @@ static void scroll_thread(void) | |||
667 | o=s->offset; | 682 | o=s->offset; |
668 | while (i<11) { | 683 | while (i<11) { |
669 | buffer[i++]=s->text[o++]; | 684 | buffer[i++]=s->text[o++]; |
670 | if (o==s->textlen) | 685 | if (o==s->textlen /* || (jump_scroll && buffer[i-1] == ' ') */) |
671 | break; | 686 | break; |
672 | } | 687 | } |
673 | o=0; | 688 | o=0; |