summaryrefslogtreecommitdiff
path: root/apps/tagtree.c
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2022-10-31 20:57:09 +0100
committerAidan MacDonald <amachronic@protonmail.com>2022-11-02 07:19:36 -0400
commitca908d6336f1ab5a089b8f53cdc1dbe5e5a36d2e (patch)
treef22ee2b5758c7b5e3165e11c3fbf4d7bbc738cf8 /apps/tagtree.c
parent59f3f43d10b58e787d23726db7ce5f22977dabf9 (diff)
downloadrockbox-ca908d6336f1ab5a089b8f53cdc1dbe5e5a36d2e.tar.gz
rockbox-ca908d6336f1ab5a089b8f53cdc1dbe5e5a36d2e.zip
Database: Fix FS#13368 – use separate selected item history
Database and File Browser were sharing each other’s selected item history before. Since the database isn’t browsed recursively, it’s probably unnecessary to include its own history in the tree context and its backups, saving.a little bit of memory. Change-Id: I87c9aed6f7056bc481b8b7299089851ef28f9bc5
Diffstat (limited to 'apps/tagtree.c')
-rw-r--r--apps/tagtree.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/tagtree.c b/apps/tagtree.c
index b6d0c8ac06..19353cabbd 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -191,6 +191,10 @@ static int current_entry_count;
191 191
192static struct tree_context *tc; 192static struct tree_context *tc;
193 193
194static int selected_item_history[MAX_DIR_LEVELS];
195static int table_history[MAX_DIR_LEVELS];
196static int extra_history[MAX_DIR_LEVELS];
197
194/* a few memory alloc helper */ 198/* a few memory alloc helper */
195static int tagtree_handle; 199static int tagtree_handle;
196static size_t tagtree_bufsize, tagtree_buf_used; 200static size_t tagtree_bufsize, tagtree_buf_used;
@@ -1840,9 +1844,9 @@ int tagtree_enter(struct tree_context* c)
1840 if (c->dirlevel >= MAX_DIR_LEVELS) 1844 if (c->dirlevel >= MAX_DIR_LEVELS)
1841 return 0; 1845 return 0;
1842 1846
1843 c->selected_item_history[c->dirlevel]=c->selected_item; 1847 selected_item_history[c->dirlevel]=c->selected_item;
1844 c->table_history[c->dirlevel] = c->currtable; 1848 table_history[c->dirlevel] = c->currtable;
1845 c->extra_history[c->dirlevel] = c->currextra; 1849 extra_history[c->dirlevel] = c->currextra;
1846 c->pos_history[c->dirlevel] = c->firstpos; 1850 c->pos_history[c->dirlevel] = c->firstpos;
1847 c->dirlevel++; 1851 c->dirlevel++;
1848 1852
@@ -1987,10 +1991,10 @@ void tagtree_exit(struct tree_context* c)
1987 c->dirfull = false; 1991 c->dirfull = false;
1988 if (c->dirlevel > 0) 1992 if (c->dirlevel > 0)
1989 c->dirlevel--; 1993 c->dirlevel--;
1990 c->selected_item=c->selected_item_history[c->dirlevel]; 1994 c->selected_item=selected_item_history[c->dirlevel];
1991 gui_synclist_select_item(&tree_lists, c->selected_item); 1995 gui_synclist_select_item(&tree_lists, c->selected_item);
1992 c->currtable = c->table_history[c->dirlevel]; 1996 c->currtable = table_history[c->dirlevel];
1993 c->currextra = c->extra_history[c->dirlevel]; 1997 c->currextra = extra_history[c->dirlevel];
1994 c->firstpos = c->pos_history[c->dirlevel]; 1998 c->firstpos = c->pos_history[c->dirlevel];
1995} 1999}
1996 2000