the fix for file based emummc is to simply sleep between fs r/w to the sd card.
the performance impact is minimal, even with the reduced buffer size.
the above *only* applies for when using file based emummc. not affecting using partition or sysmmc.
- fix usb using the wrong year when polling the timestamp.
- fs file/dir has been re-written to allow for simplified calling and remove the need of manually closing.
- add SetSize for stdio by using ftruncate.
- don't truncate the file when opened in stdio.
- add getcount api for stdio.
- display file/dir count in filebrowser for non-native fs.
- allow hash to be used on non-native fs.
- slightly optimise nro parsing by manually calculating nro size rather than doing an os call.
- slightly optimise nro parsing by keeping the fs struct alive between calls, rather than creating a new one on the stack.
- fix filebrowser peeking into zip files that are stored on non-sd fs.
- set the timestamp of a file moved to a stdio location (cut/paste).
- slightly optimise daybreak update folder detection by skipping opening/polling the dir size.
- set the fullpath of the file thats being hashed in progress box.
- added support for custom upload locations, set in /config/sphaira/locations.ini
- add support for various auth options for download/upload (port, pub/priv key, user/pass, bearer).
curl/libcurl does not send Accept-Encoding by default.
many servers support sending compressed versions of files, to speed up transfers.
this is ideal for the switch as its io is shit, but the cpu is mostly idle (4% cpu usage for sphaira).
github and appstore support sending gzip json files, themezer doesn't seem to.
* initial work on touch support
* add touch support to all objects
* add touch scrolling, fix scrollbar, fix appstore search
- when fireing an action, the action array may change. so the loop should break early as soon as an action is handled.
this fixes the appstore search when pressing B.
- scrollbar no longer goes oob. fixes#76
currently, scrolling has no acceleration.
the design in now opt-out rather than opt-in.
for fs, it is still opt-in. this is because the risk of a user deciding to delete a file / folder in the filebrowser menu.
this can now be toggled in the the advanced options menu within filebrowser.
- all menus feature page jumping, using L2/R2 (or DPAD_LEFT/DPAD_RIGHT in list menus)
- successive calls to fetch the etag would fail, this was seen in themezer and github menus.
- add limit the number of icons loaded per frame in homebrew menu.
- display default icon the image is not ready to be loaded / invalid.
fixes#53
this slightly improves lookup time for each cached entry (etag and last-modified)
by setting both entries next to each other, meaning when the one is found, the other
is already loaded in memory.
- add etag support
- add last-modified support
with the above 2 changes, this means that all downloads can be cached. when attempting to download a file,
if the file is an image, load from cache. after, the download is processed with the above tags sent. if a 304 code
is received, then the file hasn't changed. otherwise, the new tags are saved and the downloaded file is now used (in the
case of an image, the new image is now loaded over the cached one).
this results in a *huge* speed improvement and overall a huge amount of bandwidth is saved for both the client and server.
- themezer requests now only request the data needed.
this results in a json file that is 4-5x smaller, meaning a much faster download and parsing time.
- loading images is capped to 2 images a frame. this was done to avoid fs being the bottle neck.
a 9 page listing will take 5 frames. scrolling through lists is more responsive.
- downloads are pushed to the front of the queue as they're added. the point of this is to prioritise
data that we need now.
- fix potential crash when sorting files based on names as its possible for a file to have the same name
in the metadata. this fallsback to sorting by path, which is unique.
- add timeout for processing events. this was done in order to not block the main thread for too long.
- github json files have changed from a name + url to a repo + author pair.
- drawing widgets now starts from the last file in the array. as a menu takes up the whole screen, it
is pointless drawing menu's underneath. this halves gpu usage.
- download url caching has been removed. this was added to fix a race condition when opening /
closing a widget which starts a download when created. this would result in 2 same files being
downloaded at the same time. this is no longer an issue and was overhead per download request.