1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Jonathan Gordon 2011-11-15 14:11:08 +00:00
parent 101693fd30
commit 9e07ef2b0a
52 changed files with 954 additions and 862 deletions

View file

@ -31,6 +31,7 @@
int debug_indent_level = 0;
extern int skin_line;
extern char* skin_start;
extern char* skin_buffer;
/* Global error variables */
int error_line;
@ -38,6 +39,14 @@ int error_col;
const char *error_line_start;
char* error_message;
static inline struct skin_element*
get_child(OFFSETTYPE(struct skin_element**) children, int child)
{
struct skin_element **kids = SKINOFFSETTOPTR(skin_buffer, children);
return kids[child];
}
/* Debugging functions */
void skin_error(enum skin_errorcode error, const char* cursor)
{
@ -144,14 +153,14 @@ void skin_debug_tree(struct skin_element* root)
printf("{ Viewport \n");
debug_indent_level++;
skin_debug_tree(current->children[0]);
skin_debug_tree(get_child(current->children, 0));
debug_indent_level--;
printf("}");
break;
case TEXT:
text = current->data;
text = SKINOFFSETTOPTR(skin_buffer, current->data);
printf("* Plain text on line %d: \"%s\"\n", current->line, text);
break;
@ -166,7 +175,7 @@ void skin_debug_tree(struct skin_element* root)
current->tag->name,
current->line, current->params_count);
debug_indent_level++;
skin_debug_params(current->params_count, current->params);
skin_debug_params(current->params_count, SKINOFFSETTOPTR(skin_buffer, current->params));
debug_indent_level--;
skin_debug_indent();
printf(")\n");
@ -185,7 +194,7 @@ void skin_debug_tree(struct skin_element* root)
debug_indent_level++;
for(i = 0; i < current->children_count; i++)
{
skin_debug_tree(current->children[i]);
skin_debug_tree(get_child(current->children, i));
}
debug_indent_level--;
@ -203,7 +212,7 @@ void skin_debug_tree(struct skin_element* root)
skin_debug_indent();
printf("[ Enumeration %d\n", i);
debug_indent_level++;
skin_debug_tree(current->children[i]);
skin_debug_tree(get_child(current->children, i));
debug_indent_level--;
skin_debug_indent();
printf("]\n");
@ -221,7 +230,7 @@ void skin_debug_tree(struct skin_element* root)
debug_indent_level++;
if (current->children)
skin_debug_tree(current->children[0]);
skin_debug_tree(get_child(current->children, 0));
debug_indent_level--;
skin_debug_indent();
@ -229,7 +238,7 @@ void skin_debug_tree(struct skin_element* root)
break;
}
current = current->next;
current = SKINOFFSETTOPTR(skin_buffer, current->next);
}
}
@ -248,7 +257,7 @@ void skin_debug_params(int count, struct skin_tag_parameter params[])
break;
case STRING:
printf("string: \"%s\"", params[i].data.text);
printf("string: \"%s\"", SKINOFFSETTOPTR(skin_buffer, params[i].data.text));
break;
case INTEGER:
@ -263,7 +272,7 @@ void skin_debug_params(int count, struct skin_tag_parameter params[])
case CODE:
printf("Skin Code: \n");
debug_indent_level++;
skin_debug_tree(params[i].data.code);
skin_debug_tree(SKINOFFSETTOPTR(skin_buffer, params[i].data.code));
debug_indent_level--;
skin_debug_indent();
break;