diff options
| author | Tomer Shalev <shalev.tomer@gmail.com> | 2010-04-08 21:56:03 +0000 |
|---|---|---|
| committer | Tomer Shalev <shalev.tomer@gmail.com> | 2010-04-08 21:56:03 +0000 |
| commit | c3f131de068894cc2fd8cbda06501233e9e77fd5 (patch) | |
| tree | 723a07e4fa0f9f1c6af47faae2316190c16d98b5 /apps/plugins/viewer.c | |
| parent | 00b18de831b86627955040b50f41aeb84b9417ec (diff) | |
| download | rockbox-c3f131de068894cc2fd8cbda06501233e9e77fd5.zip rockbox-c3f131de068894cc2fd8cbda06501233e9e77fd5.tar.gz rockbox-c3f131de068894cc2fd8cbda06501233e9e77fd5.tar.bz2 rockbox-c3f131de068894cc2fd8cbda06501233e9e77fd5.tar.xz | |
Text viewer: Handle font loading failures
When font load fails, revert by loading to the previous font or to the global
settings font.
Fixes FS#11185 - Text viewer returns div by 0 if font is missing, renamed or corrupted
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25544 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/viewer.c')
| -rw-r--r-- | apps/plugins/viewer.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/apps/plugins/viewer.c b/apps/plugins/viewer.c index 2077273..519c8a2 100644 --- a/apps/plugins/viewer.c +++ b/apps/plugins/viewer.c @@ -1693,18 +1693,11 @@ static bool change_font(unsigned char *font) rb->snprintf(buf, MAX_PATH, "%s/%s.fnt", FONT_DIR, font); if (rb->font_load(NULL, buf) < 0) { rb->splash(HZ/2, "Font load failed."); - return false; } return true; } - -static void revert_font(void) -{ - if (rb->strcmp(prefs.font, rb->global_settings->font_file)) - change_font(rb->global_settings->font_file); -} #endif static bool viewer_init(void) @@ -2190,10 +2183,12 @@ read_end: start_position = file_pos + screen_top_ptr - buffer; #ifdef HAVE_LCD_BITMAP + /* load prefs font if it is different than the global settings font */ if (rb->strcmp(prefs.font, rb->global_settings->font_file)) { if (!change_font(prefs.font)) { - revert_font(); - return false; + /* fallback by re-loading the global settings font */ + if (!change_font(rb->global_settings->font_file)) + return false; } } @@ -2715,9 +2710,10 @@ static bool font_setting(void) if (new_font != old_font) { - if (!change_font(prefs.font)) - { - revert_font(); + /* load selected font */ + if (!change_font((unsigned char *)names[new_font].string)) { + /* revert by re-loading the preferences font */ + change_font(prefs.font); return false; } rb->memset(prefs.font, 0, MAX_PATH); |