diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-15 14:11:08 +0000 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2011-11-15 14:11:08 +0000 |
commit | 9e07ef2b0adb8fca7e5a9e516397e533653f8836 (patch) | |
tree | 0a283550421917e52ee04068b84a464976f0c4f2 /apps/gui/bitmap | |
parent | 101693fd3047fb64e766580e80635a424fa25c4d (diff) | |
download | rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.tar.gz rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.zip |
Use buflib for all skin engine allocations.
Massive thanks to Michael Chicoine and other testers for finding the early bugs.
This removes all skin memory limitations
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30991 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/bitmap')
-rw-r--r-- | apps/gui/bitmap/list-skinned.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/apps/gui/bitmap/list-skinned.c b/apps/gui/bitmap/list-skinned.c index 208b2df681..444d49148f 100644 --- a/apps/gui/bitmap/list-skinned.c +++ b/apps/gui/bitmap/list-skinned.c | |||
@@ -175,22 +175,23 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list) | |||
175 | for (cur_line = 0; cur_line < display_lines; cur_line++) | 175 | for (cur_line = 0; cur_line < display_lines; cur_line++) |
176 | { | 176 | { |
177 | struct skin_element* viewport; | 177 | struct skin_element* viewport; |
178 | struct skin_viewport* skin_viewport; | 178 | struct skin_viewport* skin_viewport = NULL; |
179 | if (list_start_item+cur_line+1 > list->nb_items) | 179 | if (list_start_item+cur_line+1 > list->nb_items) |
180 | break; | 180 | break; |
181 | current_drawing_line = list_start_item+cur_line; | 181 | current_drawing_line = list_start_item+cur_line; |
182 | is_selected = list->show_selection_marker && | 182 | is_selected = list->show_selection_marker && |
183 | list_start_item+cur_line == list->selected_item; | 183 | list_start_item+cur_line == list->selected_item; |
184 | 184 | ||
185 | for (viewport = listcfg[screen]->data->tree; | 185 | for (viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), listcfg[screen]->data->tree); |
186 | viewport; | 186 | viewport; |
187 | viewport = viewport->next) | 187 | viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->next)) |
188 | { | 188 | { |
189 | int origional_x, origional_y; | 189 | int origional_x, origional_y; |
190 | int origional_w, origional_h; | 190 | int origional_w, origional_h; |
191 | char *viewport_label = SKINOFFSETTOPTR(get_skin_buffer(wps.data), skin_viewport->label); | ||
191 | skin_viewport = (struct skin_viewport*)viewport->data; | 192 | skin_viewport = (struct skin_viewport*)viewport->data; |
192 | if (viewport->children == 0 || !skin_viewport->label || | 193 | if (viewport->children == 0 || !viewport_label || |
193 | (skin_viewport->label && strcmp(label, skin_viewport->label)) | 194 | (skin_viewport->label && strcmp(label, viewport_label)) |
194 | ) | 195 | ) |
195 | continue; | 196 | continue; |
196 | if (is_selected) | 197 | if (is_selected) |
@@ -220,15 +221,17 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list) | |||
220 | display->set_viewport(&skin_viewport->vp); | 221 | display->set_viewport(&skin_viewport->vp); |
221 | #ifdef HAVE_LCD_BITMAP | 222 | #ifdef HAVE_LCD_BITMAP |
222 | /* Set images to not to be displayed */ | 223 | /* Set images to not to be displayed */ |
223 | struct skin_token_list *imglist = wps.data->images; | 224 | struct skin_token_list *imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), wps.data->images); |
224 | while (imglist) | 225 | while (imglist) |
225 | { | 226 | { |
226 | struct gui_img *img = (struct gui_img *)imglist->token->value.data; | 227 | struct wps_token *token = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->token); |
228 | struct gui_img *img = SKINOFFSETTOPTR(get_skin_buffer(wps.data), token->value.data); | ||
227 | img->display = -1; | 229 | img->display = -1; |
228 | imglist = imglist->next; | 230 | imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->next); |
229 | } | 231 | } |
230 | #endif | 232 | #endif |
231 | skin_render_viewport(viewport->children[0], | 233 | struct skin_element** children = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->children); |
234 | skin_render_viewport(children[0], | ||
232 | &wps, skin_viewport, SKIN_REFRESH_ALL); | 235 | &wps, skin_viewport, SKIN_REFRESH_ALL); |
233 | #ifdef HAVE_LCD_BITMAP | 236 | #ifdef HAVE_LCD_BITMAP |
234 | wps_display_images(&wps, &skin_viewport->vp); | 237 | wps_display_images(&wps, &skin_viewport->vp); |