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:
parent
101693fd30
commit
9e07ef2b0a
52 changed files with 954 additions and 862 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue