summaryrefslogtreecommitdiff
path: root/apps/gui/bitmap/list-skinned.c
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/list-skinned.c
parent101693fd3047fb64e766580e80635a424fa25c4d (diff)
downloadrockbox-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/list-skinned.c')
-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 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);