summaryrefslogtreecommitdiffstats
path: root/firmware/drivers/lcd-bitmap-common.c
diff options
context:
space:
mode:
authorAlexander Levin <al.le@rockbox.org>2011-01-23 21:49:49 +0000
committerAlexander Levin <al.le@rockbox.org>2011-01-23 21:49:49 +0000
commitfb2d6a7a3a15f33b06b8efc3c0e5d93ae12cfbc2 (patch)
treefd3ca80ab42dd944afca0252eb80e71806ce9c69 /firmware/drivers/lcd-bitmap-common.c
parent480c663e5b67d521f3e062fb90d10c7c5c186280 (diff)
downloadrockbox-fb2d6a7a3a15f33b06b8efc3c0e5d93ae12cfbc2.tar.gz
rockbox-fb2d6a7a3a15f33b06b8efc3c0e5d93ae12cfbc2.zip
Respect the 'scroll delay' setting more accurately between scrolling rounds
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29123 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/lcd-bitmap-common.c')
-rw-r--r--firmware/drivers/lcd-bitmap-common.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c
index fa18f9fa1f..1a504c6f40 100644
--- a/firmware/drivers/lcd-bitmap-common.c
+++ b/firmware/drivers/lcd-bitmap-common.c
@@ -435,6 +435,7 @@ void LCDFN(scroll_fn)(void)
int index;
int xpos, ypos;
struct viewport* old_vp = current_vp;
+ bool makedelay = false;
for ( index = 0; index < LCDFN(scroll_info).lines; index++ ) {
s = &LCDFN(scroll_info).scroll[index];
@@ -459,26 +460,31 @@ void LCDFN(scroll_fn)(void)
/* at beginning of line */
s->offset = 0;
s->backward = false;
- s->start_tick = current_tick + LCDFN(scroll_info).delay * 2;
+ makedelay = true;
}
- if (s->offset >= s->width - (current_vp->width - xpos)) {
+ else if (s->offset >= s->width - (current_vp->width - xpos)) {
/* at end of line */
s->offset = s->width - (current_vp->width - xpos);
s->backward = true;
- s->start_tick = current_tick + LCDFN(scroll_info).delay * 2;
+ makedelay = true;
}
}
else {
/* scroll forward the whole time */
if (s->offset >= s->width) {
s->offset = 0;
- s->start_tick = current_tick + LCDFN(scroll_info).delay * 2;
+ makedelay = true;
}
}
+
+ if (makedelay)
+ s->start_tick = current_tick + LCDFN(scroll_info).delay +
+ LCDFN(scroll_info).ticks;
+
LCDFN(putsxyofs_style)(xpos, ypos, s->line, s->style, s->width,
pf->height, s->offset);
LCDFN(update_viewport_rect)(xpos, ypos, current_vp->width - xpos,
- pf->height);
+ pf->height);
}
LCDFN(set_viewport)(old_vp);
}