diff options
author | Magnus Holmgren <magnushol@gmail.com> | 2006-12-17 15:40:13 +0000 |
---|---|---|
committer | Magnus Holmgren <magnushol@gmail.com> | 2006-12-17 15:40:13 +0000 |
commit | c0b28629565de55084a1c6c5d2ce387490032e7d (patch) | |
tree | c799b971d9c51f2a478bac4a6b919ed7bb9fbbbf /firmware | |
parent | 84a013ea419efd0373846741b812d7ccf78881b9 (diff) | |
download | rockbox-c0b28629565de55084a1c6c5d2ce387490032e7d.tar.gz rockbox-c0b28629565de55084a1c6c5d2ce387490032e7d.zip |
Fix freeze/crash problems when scrolling very long strings (like filenames or tags).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11789 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/bidi.c | 4 | ||||
-rw-r--r-- | firmware/export/lcd.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/firmware/bidi.c b/firmware/bidi.c index a6f6b8c5d9..b5851f298e 100644 --- a/firmware/bidi.c +++ b/firmware/bidi.c | |||
@@ -131,8 +131,8 @@ void arabjoin(unsigned short * stringprt, int length){ | |||
131 | unsigned short *bidi_l2v(const unsigned char *str, int orientation) | 131 | unsigned short *bidi_l2v(const unsigned char *str, int orientation) |
132 | { | 132 | { |
133 | int length = utf8length(str); | 133 | int length = utf8length(str); |
134 | static unsigned short utf16_buf[MAX_PATH+1]; | 134 | static unsigned short utf16_buf[SCROLL_LINE_SIZE]; |
135 | static unsigned short bidi_buf[MAX_PATH+1]; | 135 | static unsigned short bidi_buf[SCROLL_LINE_SIZE]; |
136 | unsigned short *heb_str, *target, *tmp; // *broken_str | 136 | unsigned short *heb_str, *target, *tmp; // *broken_str |
137 | int block_start, block_end, block_type, block_length, i; | 137 | int block_start, block_end, block_type, block_length, i; |
138 | //long max_chars=0; | 138 | //long max_chars=0; |
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 1ccbc513d2..3e1ea4430b 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h | |||
@@ -367,9 +367,10 @@ extern void lcd_bitmap_transparent(const fb_data *src, int x, int y, | |||
367 | /* internal usage, but in multiple drivers */ | 367 | /* internal usage, but in multiple drivers */ |
368 | #ifdef HAVE_LCD_BITMAP | 368 | #ifdef HAVE_LCD_BITMAP |
369 | #define SCROLL_SPACING 3 | 369 | #define SCROLL_SPACING 3 |
370 | #define SCROLL_LINE_SIZE (MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2) | ||
370 | 371 | ||
371 | struct scrollinfo { | 372 | struct scrollinfo { |
372 | char line[MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2]; | 373 | char line[SCROLL_LINE_SIZE]; |
373 | int len; /* length of line in chars */ | 374 | int len; /* length of line in chars */ |
374 | int width; /* length of line in pixels */ | 375 | int width; /* length of line in pixels */ |
375 | int offset; | 376 | int offset; |