summaryrefslogtreecommitdiff
path: root/firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2021-11-01 00:22:22 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2021-11-10 02:34:06 -0500
commit58462184d16ac26c77957224bb0ed94567a2eff5 (patch)
tree78b39e7f7bd394152546431fdcf77ce13f7278e6 /firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c
parentb14df9077ff87d978577e17457dabfb997114863 (diff)
downloadrockbox-58462184d16ac26c77957224bb0ed94567a2eff5.tar.gz
rockbox-58462184d16ac26c77957224bb0ed94567a2eff5.zip
folder_select.c partial rewrite -- remove static, add full notification
| with some code refactoring we can eliminate the static char buffer in get_full_path() I'm guessing making the functions recursive prompted the static buffer I don't see any reason we can't just pass the same buffer | During tested I noted failure after buffer was full -- splash added for buffer full notification added some logic to not add partial entries and try to find a | selected item that will fit in the remaing buffer ------------------------------------------------------------------------ While looking through the source I noticed a few potential pitfalls with the current code. Namely the stack allocated temporary buffer sized to setting_len. I also noted the rigid vect[32] with the timeless -- /* 32 separate folders should be Enough For Everybody(TM) */ and decided to make it a bit more robust The saved items are hashed with crc32 on all the paths and a hashed_len is kept to aid in the buffer full message before the user actually goes to save the changes (assuming they even get the message) In the old code, buffer might be the same since it ran out of space and didn't get their later selections the hashed_len could easily be turned into a way to get a needed buffer size as well for someone in the future just pass a really large maxlen I made get_full_path non recursive since it liked to blow the stack while embedded in all the other recursive calls making it a pain to debug (the real reason the buffer was static?) traverse first from the current folder to root mutating the parent pointers to point at the previous child next traverse back to the folder unmutating & taking names on the way Folder depth is now uint16 65535 levels is probably excessive children_count is also uint16 as well I made the first folders below root '/' stay below root instead of shifting since the horizontal real estate is limited slightly smaller than it began but hopefully faster & more reliable Change-Id: I348f61baf865cccdeacddfd9d50641a882e890fc
Diffstat (limited to 'firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c')
0 files changed, 0 insertions, 0 deletions