diff options
author | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-20 21:53:47 +0000 |
---|---|---|
committer | Rafaël Carré <rafael.carre@gmail.com> | 2010-06-20 21:53:47 +0000 |
commit | 298316d19297eea82869b63235b535e5904fc0dd (patch) | |
tree | 0426e9c8cecac7532a88888e78e5e54ea9bb6145 /apps/plugins/text_viewer/tv_pager.c | |
parent | 17a2f9d8d2dfddd8d2d81ff638e21302efef1c8e (diff) | |
download | rockbox-298316d19297eea82869b63235b535e5904fc0dd.tar.gz rockbox-298316d19297eea82869b63235b535e5904fc0dd.zip |
text_viewer: cleanup & bugfix
cleanup:
- don't use enum in struct / return values
- don't use a getter for preferences but a global pointer
- explicitely make enums start at 0
- use static tables for header/footer settings
- remove unneeded memset before strlcpy
- use static buffer allocation, not dynamic
- check header/footer preferences before using the callbacks
- don't include font filename in archos player preferences (break
file format)
bugfix:
- statically allocate old preferences in tv_set_preferences()
Sometimes I can read a file on Clipv2, but it still aborts quite often
refs: FS#11399
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26998 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/text_viewer/tv_pager.c')
-rw-r--r-- | apps/plugins/text_viewer/tv_pager.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/apps/plugins/text_viewer/tv_pager.c b/apps/plugins/text_viewer/tv_pager.c index d98fe4627d..0c109530f8 100644 --- a/apps/plugins/text_viewer/tv_pager.c +++ b/apps/plugins/text_viewer/tv_pager.c | |||
@@ -32,9 +32,7 @@ | |||
32 | #define TV_MAX_PAGE 9999 | 32 | #define TV_MAX_PAGE 9999 |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | #define TV_PAGER_MEMSIZE (4 * TV_MAX_PAGE) | 35 | static unsigned char pager_buffer[4 * TV_MAX_PAGE]; |
36 | |||
37 | static unsigned char *pager_buffer; | ||
38 | 36 | ||
39 | static struct tv_screen_pos cur_pos; | 37 | static struct tv_screen_pos cur_pos; |
40 | 38 | ||
@@ -87,12 +85,8 @@ static void tv_change_preferences(const struct tv_preferences *oldp) | |||
87 | tv_seek(0, SEEK_SET); | 85 | tv_seek(0, SEEK_SET); |
88 | } | 86 | } |
89 | 87 | ||
90 | bool tv_init_pager(unsigned char *buf, size_t bufsize, size_t *used_size) | 88 | bool tv_init_pager(void) |
91 | { | 89 | { |
92 | if (bufsize < TV_PAGER_MEMSIZE) | ||
93 | return false; | ||
94 | |||
95 | pager_buffer = buf; | ||
96 | tv_set_screen_pos(&cur_pos); | 90 | tv_set_screen_pos(&cur_pos); |
97 | tv_add_preferences_change_listner(tv_change_preferences); | 91 | tv_add_preferences_change_listner(tv_change_preferences); |
98 | 92 | ||
@@ -101,14 +95,7 @@ bool tv_init_pager(unsigned char *buf, size_t bufsize, size_t *used_size) | |||
101 | 95 | ||
102 | line_pos[0] = 0; | 96 | line_pos[0] = 0; |
103 | 97 | ||
104 | buf += TV_PAGER_MEMSIZE; | 98 | return tv_init_reader(); |
105 | bufsize -= TV_PAGER_MEMSIZE; | ||
106 | if (!tv_init_reader(buf, bufsize, used_size)) | ||
107 | return false; | ||
108 | |||
109 | *used_size += TV_PAGER_MEMSIZE; | ||
110 | |||
111 | return true; | ||
112 | } | 99 | } |
113 | 100 | ||
114 | void tv_finalize_pager(void) | 101 | void tv_finalize_pager(void) |