summaryrefslogtreecommitdiff
path: root/apps/gui/bitmap
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2011-11-15 14:11:08 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2011-11-15 14:11:08 +0000
commit9e07ef2b0adb8fca7e5a9e516397e533653f8836 (patch)
tree0a283550421917e52ee04068b84a464976f0c4f2 /apps/gui/bitmap
parent101693fd3047fb64e766580e80635a424fa25c4d (diff)
downloadrockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.zip
rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.tar.gz
rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.tar.bz2
rockbox-9e07ef2b0adb8fca7e5a9e516397e533653f8836.tar.xz
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.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/apps/gui/bitmap/list-skinned.c b/apps/gui/bitmap/list-skinned.c
index 208b2df..444d491 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)
for (cur_line = 0; cur_line < display_lines; cur_line++)
{
struct skin_element* viewport;
- struct skin_viewport* skin_viewport;
+ struct skin_viewport* skin_viewport = NULL;
if (list_start_item+cur_line+1 > list->nb_items)
break;
current_drawing_line = list_start_item+cur_line;
is_selected = list->show_selection_marker &&
list_start_item+cur_line == list->selected_item;
- for (viewport = listcfg[screen]->data->tree;
+ for (viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), listcfg[screen]->data->tree);
viewport;
- viewport = viewport->next)
+ viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->next))
{
int origional_x, origional_y;
int origional_w, origional_h;
+ char *viewport_label = SKINOFFSETTOPTR(get_skin_buffer(wps.data), skin_viewport->label);
skin_viewport = (struct skin_viewport*)viewport->data;
- if (viewport->children == 0 || !skin_viewport->label ||
- (skin_viewport->label && strcmp(label, skin_viewport->label))
+ if (viewport->children == 0 || !viewport_label ||
+ (skin_viewport->label && strcmp(label, viewport_label))
)
continue;
if (is_selected)
@@ -220,15 +221,17 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list)
display->set_viewport(&skin_viewport->vp);
#ifdef HAVE_LCD_BITMAP
/* Set images to not to be displayed */
- struct skin_token_list *imglist = wps.data->images;
+ struct skin_token_list *imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), wps.data->images);
while (imglist)
{
- struct gui_img *img = (struct gui_img *)imglist->token->value.data;
+ struct wps_token *token = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->token);
+ struct gui_img *img = SKINOFFSETTOPTR(get_skin_buffer(wps.data), token->value.data);
img->display = -1;
- imglist = imglist->next;
+ imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->next);
}
#endif
- skin_render_viewport(viewport->children[0],
+ struct skin_element** children = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->children);
+ skin_render_viewport(children[0],
&wps, skin_viewport, SKIN_REFRESH_ALL);
#ifdef HAVE_LCD_BITMAP
wps_display_images(&wps, &skin_viewport->vp);