diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-02 21:47:35 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2010-03-02 21:47:35 +0000 |
commit | 9e611b1b009d6d5e02c10b5015cd4f2bc56f249e (patch) | |
tree | 8e5006fb1f765d55738a8ed194234bb018c9bcfa /apps/gui/skin_engine/skin_parser.c | |
parent | 66ebc35c557e27401799e542a6fee8c824364bb2 (diff) | |
download | rockbox-9e611b1b009d6d5e02c10b5015cd4f2bc56f249e.tar.gz rockbox-9e611b1b009d6d5e02c10b5015cd4f2bc56f249e.zip |
revert r24989 ad r24990 which are cuasing segfaults... they were working fine for me though :( (stupid font stuff is cursed!)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24993 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index c4f8d1a8ca..76527f664a 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -935,6 +935,14 @@ static int parse_viewport(const char *wps_bufptr, | |||
935 | else | 935 | else |
936 | vp->flags &= ~VP_FLAG_ALIGN_RIGHT; /* ignore right-to-left languages */ | 936 | vp->flags &= ~VP_FLAG_ALIGN_RIGHT; /* ignore right-to-left languages */ |
937 | 937 | ||
938 | /* increment because font==2 and FONT_UI_REMOTE is ambiguous */ | ||
939 | if (vp->font > FONT_UI) | ||
940 | vp->font++; | ||
941 | #ifdef HAVE_REMOTE_LCD | ||
942 | if (vp->font == FONT_UI && curr_screen == SCREEN_REMOTE) | ||
943 | vp->font = FONT_UI_REMOTE; | ||
944 | #endif | ||
945 | |||
938 | struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp); | 946 | struct skin_token_list *list = new_skin_token_list_item(NULL, skin_vp); |
939 | if (!list) | 947 | if (!list) |
940 | return WPS_ERROR_INVALID_PARAM; | 948 | return WPS_ERROR_INVALID_PARAM; |
@@ -2080,7 +2088,6 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2080 | /* don't spit out after the first failue to aid debugging */ | 2088 | /* don't spit out after the first failue to aid debugging */ |
2081 | bool success = true; | 2089 | bool success = true; |
2082 | struct skin_token_list *vp_list; | 2090 | struct skin_token_list *vp_list; |
2083 | int font_id; | ||
2084 | /* walk though each viewport and assign its font */ | 2091 | /* walk though each viewport and assign its font */ |
2085 | for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) | 2092 | for(vp_list = data->viewports; vp_list; vp_list = vp_list->next) |
2086 | { | 2093 | { |
@@ -2090,21 +2097,20 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2090 | struct viewport *vp = &skin_vp->vp; | 2097 | struct viewport *vp = &skin_vp->vp; |
2091 | 2098 | ||
2092 | 2099 | ||
2093 | if (vp->font <= FONT_UI) | 2100 | if (vp->font < SYSTEMFONTCOUNT) |
2094 | { /* the usual case -> built-in fonts */ | 2101 | { /* the usual case -> built-in fonts */ |
2095 | #ifdef HAVE_REMOTE_LCD | ||
2096 | if (vp->font == FONT_UI) | ||
2097 | vp->font += curr_screen; | ||
2098 | #endif | ||
2099 | continue; | 2102 | continue; |
2100 | } | 2103 | } |
2101 | font_id = vp->font; | 2104 | |
2105 | /* decrement, because font has been incremented in viewport parsing | ||
2106 | * due to the FONT_UI_REMOTE ambiguity */ | ||
2107 | int skin_font_id = vp->font-1; | ||
2102 | 2108 | ||
2103 | /* now find the corresponding skin_font */ | 2109 | /* now find the corresponding skin_font */ |
2104 | struct skin_font *font = &skinfonts[font_id-FONT_FIRSTUSERFONT]; | 2110 | struct skin_font *font = &skinfonts[skin_font_id-FONT_FIRSTUSERFONT]; |
2105 | if (!font) | 2111 | if (!font) |
2106 | { | 2112 | { |
2107 | DEBUGF("Could not find font %d\n", font_id); | 2113 | DEBUGF("Could not find font %d\n", skin_font_id); |
2108 | success = false; | 2114 | success = false; |
2109 | continue; | 2115 | continue; |
2110 | } | 2116 | } |
@@ -2121,7 +2127,7 @@ static bool skin_load_fonts(struct wps_data *data) | |||
2121 | if (font->id < 0) | 2127 | if (font->id < 0) |
2122 | { | 2128 | { |
2123 | DEBUGF("Unable to load font %d: '%s.fnt'\n", | 2129 | DEBUGF("Unable to load font %d: '%s.fnt'\n", |
2124 | font_id, font->name); | 2130 | skin_font_id, font->name); |
2125 | success = false; | 2131 | success = false; |
2126 | continue; | 2132 | continue; |
2127 | } | 2133 | } |
@@ -2154,14 +2160,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data, | |||
2154 | old_aa.width = wps_data->albumart->width; | 2160 | old_aa.width = wps_data->albumart->width; |
2155 | } | 2161 | } |
2156 | #endif | 2162 | #endif |
2157 | #ifdef HAVE_LCD_BITMAP | ||
2158 | int i; | ||
2159 | for (i=0;i<MAXUSERFONTS;i++) | ||
2160 | { | ||
2161 | skinfonts[i].id = -1; | ||
2162 | skinfonts[i].name = NULL; | ||
2163 | } | ||
2164 | #endif | ||
2165 | 2163 | ||
2166 | skin_data_reset(wps_data); | 2164 | skin_data_reset(wps_data); |
2167 | curr_screen = screen; | 2165 | curr_screen = screen; |
@@ -2183,9 +2181,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data, | |||
2183 | curr_vp->lines = NULL; | 2181 | curr_vp->lines = NULL; |
2184 | 2182 | ||
2185 | viewport_set_defaults(&curr_vp->vp, screen); | 2183 | viewport_set_defaults(&curr_vp->vp, screen); |
2186 | #ifdef HAVE_LCD_BITMAP | ||
2187 | curr_vp->vp.font = FONT_UI; | ||
2188 | #endif | ||
2189 | 2184 | ||
2190 | curr_line = NULL; | 2185 | curr_line = NULL; |
2191 | if (!skin_start_new_line(curr_vp, 0)) | 2186 | if (!skin_start_new_line(curr_vp, 0)) |