diff options
author | Christian Soffke <christian.soffke@gmail.com> | 2022-10-31 20:57:09 +0100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2022-11-02 07:19:36 -0400 |
commit | ca908d6336f1ab5a089b8f53cdc1dbe5e5a36d2e (patch) | |
tree | f22ee2b5758c7b5e3165e11c3fbf4d7bbc738cf8 /apps/tagtree.c | |
parent | 59f3f43d10b58e787d23726db7ce5f22977dabf9 (diff) | |
download | rockbox-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.c | 16 |
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 | ||
192 | static struct tree_context *tc; | 192 | static struct tree_context *tc; |
193 | 193 | ||
194 | static int selected_item_history[MAX_DIR_LEVELS]; | ||
195 | static int table_history[MAX_DIR_LEVELS]; | ||
196 | static int extra_history[MAX_DIR_LEVELS]; | ||
197 | |||
194 | /* a few memory alloc helper */ | 198 | /* a few memory alloc helper */ |
195 | static int tagtree_handle; | 199 | static int tagtree_handle; |
196 | static size_t tagtree_bufsize, tagtree_buf_used; | 200 | static 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 | ||