summaryrefslogtreecommitdiff
path: root/apps/plugins/text_viewer/tv_pager.c
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-06-20 21:53:47 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-06-20 21:53:47 +0000
commit298316d19297eea82869b63235b535e5904fc0dd (patch)
tree0426e9c8cecac7532a88888e78e5e54ea9bb6145 /apps/plugins/text_viewer/tv_pager.c
parent17a2f9d8d2dfddd8d2d81ff638e21302efef1c8e (diff)
downloadrockbox-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.c19
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) 35static unsigned char pager_buffer[4 * TV_MAX_PAGE];
36
37static unsigned char *pager_buffer;
38 36
39static struct tv_screen_pos cur_pos; 37static 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
90bool tv_init_pager(unsigned char *buf, size_t bufsize, size_t *used_size) 88bool 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
114void tv_finalize_pager(void) 101void tv_finalize_pager(void)