fix overlapping icons if you have both themes and splashes (#105)

This commit is contained in:
LiquidFenrir
2017-12-08 18:11:52 +01:00
committed by Dylan G
parent adf2a50143
commit fb18dce177
3 changed files with 35 additions and 9 deletions

View File

@@ -60,6 +60,8 @@ typedef struct {
Entry_s * entries; Entry_s * entries;
int entries_count; int entries_count;
ssize_t icon_id_start;
int scroll; int scroll;
int selected_entry; int selected_entry;

View File

@@ -134,7 +134,8 @@ Result load_entries(const char * loading_path, Entry_List_s * list)
current_entry->is_zip = !strcmp(dir_entry.shortExt, "ZIP"); current_entry->is_zip = !strcmp(dir_entry.shortExt, "ZIP");
ssize_t iconID = TEXTURE_ICON + list->entries_count; ssize_t iconID = list->icon_id_start + list->entries_count - 1;
DEBUG("id: %u\n", iconID);
parse_smdh(current_entry, iconID, dir_entry.name); parse_smdh(current_entry, iconID, dir_entry.name);
} }

View File

@@ -91,6 +91,34 @@ void change_selected(Entry_List_s * list, int change_value)
list->selected_entry %= list->entries_count; list->selected_entry %= list->entries_count;
} }
void load_lists(Entry_List_s * lists)
{
DEBUG("origin: %u\n", TEXTURE_ICON);
ssize_t last_icon_id = TEXTURE_ICON;
for(int i = 0; i < MODE_AMOUNT; i++)
{
Entry_List_s * current_list = &lists[i];
last_icon_id += current_list->entries_count;
free(current_list->entries);
memset(current_list, 0, sizeof(Entry_List_s));
}
pp2d_free_texture(last_icon_id);
DEBUG("max: %u\n", last_icon_id);
ssize_t icon_id_start = TEXTURE_ICON;
for(int i = 0; i < MODE_AMOUNT; i++)
{
Entry_List_s * current_list = &lists[i];
current_list->icon_id_start = icon_id_start;
load_entries(main_paths[i], current_list);
icon_id_start += current_list->entries_count;
}
DEBUG("end: %u\n", icon_id_start);
}
int main(void) int main(void)
{ {
srand(time(NULL)); srand(time(NULL));
@@ -98,9 +126,7 @@ int main(void)
init_screens(); init_screens();
Entry_List_s lists[MODE_AMOUNT] = {0}; Entry_List_s lists[MODE_AMOUNT] = {0};
load_lists(lists);
for(int i = 0; i < MODE_AMOUNT; i++)
load_entries(main_paths[i], &lists[i]);
EntryMode current_mode = MODE_THEMES; EntryMode current_mode = MODE_THEMES;
@@ -175,11 +201,7 @@ int main(void)
CAMU_StartCapture(PORT_BOTH); CAMU_StartCapture(PORT_BOTH);
if(!qr_mode) if(!qr_mode)
{ load_lists(lists);
free(current_list->entries);
memset(current_list, 0, sizeof(Entry_List_s));
load_entries(main_paths[current_mode], current_list);
}
continue; continue;
} }
@@ -232,6 +254,7 @@ int main(void)
case MODE_SPLASHES: case MODE_SPLASHES:
draw_install(INSTALL_SPLASH_DELETE); draw_install(INSTALL_SPLASH_DELETE);
splash_delete(); splash_delete();
break;
default: default:
break; break;
} }