mkdir -p apkbuild/assets/data apkbuild/assets/sdr
cp -r data/* apkbuild/assets/data
cp -r sdr/* apkbuild/assets/sdr
- mkdir -p apkbuild/res/drawable-xhdpi apkbuild/res/drawable-hdpi apkbuild/res/drawable-mdpi apkbuild/res/drawable-ldpi
+ mkdir -p apkbuild/res/drawable-xxhdpi apkbuild/res/drawable-xxxhdpi
+ mkdir -p apkbuild/res/drawable-xhdpi apkbuild/res/drawable-hdpi
+ mkdir -p apkbuild/res/drawable-mdpi apkbuild/res/drawable-ldpi
+ cp data/icon192.png apkbuild/res/drawable-xxxhdpi/ic_launcher.png
+ cp data/icon144.png apkbuild/res/drawable-xxhdpi/ic_launcher.png
cp data/icon96.png apkbuild/res/drawable-xhdpi/ic_launcher.png
cp data/icon72.png apkbuild/res/drawable-hdpi/ic_launcher.png
cp data/icon48.png apkbuild/res/drawable-mdpi/ic_launcher.png
static void proc_screen_script(struct demoscreen *scr, struct ts_node *node);
static void proc_track(struct ts_node *node, const char *pname);
static long io_read(void *buf, size_t bytes, void *uptr);
+static void del_rbnode(struct rbnode *node, void *cls);
int dsys_init(const char *fname)
if(!(dsys.trackmap = rb_create(RB_KEY_STRING))) {
return -1;
}
+ rb_set_delete_func(dsys.trackmap, del_rbnode, 0);
+
dsys.track = darr_alloc(0, sizeof *dsys.track);
dsys.value = darr_alloc(0, sizeof *dsys.value);
anm_init_track(dsys.track + idx);
- if(rb_insert(dsys.trackmap, (char*)name, (void*)(intptr_t)idx) == -1) {
+ if(rb_insert(dsys.trackmap, (char*)strdup_nf(name), (void*)(intptr_t)idx) == -1) {
fprintf(stderr, "failed to insert to track map: %s\n", name);
abort();
}
int idx = dsys_find_track(name);
return idx == -1 ? 0.0f : dsys.value[idx];
}
+
+static void del_rbnode(struct rbnode *node, void *cls)
+{
+ free(node->key);
+}
int rb_insert(struct rbtree *rb, void *key, void *data)
{
+#ifndef NDEBUG
+ int stack_var;
+ if(abs((uintptr_t)&stack_var - (uintptr_t)key) < 0x80000) {
+ fprintf(stderr, "rb_insert warning: key seems to point to the stack\n");
+ }
+#endif
rb->root = insert(rb, rb->root, key, data);
rb->root->red = 0;
return 0;