If the preview .ogg has a samplerate > the BUF_TO_READ constant, there was an out of bounds write to the audio buffers which resulted in crackling.
Thus, upped it to 48000 (0x80-aligned, and pretty much the highest rate anything consumer goes). a bit big, but safe.
* memory leak fix and attempt at optimizing space
* camera rework
try to use better locking algorithm (MRSW lock on wikipedia)
* add time print (toggleable) and stuff
remove old mixed qr thingss from main
* remove the dumb 3 bytes saving
* remove useless time measure code
* forgot to close the stop event handle
* fix memory leak when loading icon from smdh
* fix entry path on folders
optimization using memcpy cause it to have the "/info.smdh" when the entry is a folder. simply remove that with a memset to 0.
Co-authored-by: Alex Taber <astronautlevel2@users.noreply.github.com>
* Began refactoring http_get. Still a few cases to handle, but it works.
* Introduced error enum; handle error 406; handle a misbehaving server; redirect_url leaked memory (L888)
* Allowed calls to http_get to pass NULL as acceptable_mime_types
* Removed status_code from header struct; eventually planning to move most of parse_header's logic back to http_get, so this makes sense
* Moved some more logic back into http_get
Note: currently behaves weirdly with some QR codes, including but probably not limited to ones pointing to TinyURL.
* Handle redirects correctly; other rearrangements
* Formatting
* Handle HTTP 303 See Other correctly
* Removed "Download failed" error in camera.c due to all related failures being handled in http_get
* Fixed missing loading bar; started working on unchunked download
* Added unchunked download
* Reintroduced the download progress bar, rolled back to always doing chunked download
* URL length caps at 2083 chars
* Slightly more efficient
* Correctly handle incorrect filesize header
TODO: reorder clauses to remove the goto?
* Fixed illegal characters, removed unnecessary logic (technically a regression, as we always have to realloc now)
* Finally finished up status code handling. Fixed a memory leak when the server fails conneg.
* Improve QR scanner initialization time
* Fix race condition with QR scanner and button spamming
* Don't show black screen before QR scanner has loaded
* Show loading message for QR scanner
* Switch from pp2d to citro2d
* Fix various bugs by updating libarchive
* Begin work on translation infrastructure
* Switch to libpng for various improvements
* Fixed race condition in icon scrolling
* Use spritesheets to load sprites marginally faster and use less memory
* Various Readme fixes
* Huge improvements to QR reader speed and screen tearing
* Don't try to preview themes/splashes when there are none
* Prevent playing audio when ndspInit() fails
* Don't wait for audio to load before displaying preview
* Fix bug when shuffle themes didn't have BGM
* Fix bug caused by files not being zeroed out when created
- when loading icons
- when downloading via QR
- when loading list in the browser
- when loading preview/BGM in the browser
- when downloading from the browser
* change fs to use a FS_Path argument for remake_file and buf_to_file
* more debug information when downloading
* browser caching v1: poc, works and is fast but not ideal
* add preview to cache
* this wasnt meant to be added now
* switch to libarchive and get rid of minizip, introduce zip_memory_to_buf
* automatically detect whether the downloaded zip is a splash or a theme
* slightly simpler way
* builds at least
* meh, multithreading will come later. or never
* movement added, and correct grid mode
* switching splash/themes when in browser mode
* closer to the actual themeplaza menu
* bring back downloading from qr
* show a download screen when downloading from browser
* fix selecting with touchscreen in browser mode
* update readme for jansson
* fix quitting with start in browser mode
* add jump menu for browser mode
* rotate is broken, add working touchscreen page changing
* allow quitting preview mode with B in browser mode
* proper way to have portlibs
* add searching
* show error when search has no results
* always free entries and icon ids
* other method: leave scrolling to icon updating function
downside: scroll can lag behind the selected entry if going too fast
* bring back looping so scrolling doesnt lag behind as much when going out of bounds
only about a second lag, then a second again for icons to load
* this method doesnt need to know the ids
* fix memory leak
* optimize for invisibility
* fix lockup when install checking threads are finished
* less magic, again
make icon loading functions/numbers more general
* increase wait time for fastcroll to give people more time to react, and to prevent some lag for the loading function
* icons are black, but it's a start
* after testing, info_buffer in load_smdh_icon is for some reason all 0
* working! same speed as pre-threading (I think)
but the icons lag behind a bit.
Still, should allow for infinite themes
* not needed anymore
* fix icons not being loaded when switching modes
* stop trying to load icons if there arent enough entries
* swapping logic almost there...
* only need to update when on the main screen
* fix blind spot and typo
* allow optimizations maybe?
maybe will break stuff. just revert if it's the case
* fix blind spot when going up after cycling
* add swapping when changing 1 screen at a time (left/right)
* not needed anymore, since icon ids are fixed
* simpler scrolling
* dont reload everything when cycling
* other method for storing ids, maybe better logic later
* fix crash
* attempt at better and clearer algorithm for swapping
* optimization, swapping still broken but this was needed
* fix cycling/using left resulting in reversed icons
* fix icons scrolling in reverse
and fix the bug that introduced (same as switch-case method): scroll not following the selected entry when using left/right
* don't break when using left/right near the top/end
* correctly return from failed realloc during entries load
* move freeing the entries and killing the icon updating thread to exit_function
* fix icons being shifted the wrong value when cycling
* only exit using the shutdown screen method when needed
* show simple loading screen for themes and splashes
* only have the thread when needed
should consume less battery for people with low amount of splashes and themes
* fix instructions showing over the "no X found" screen
* fix instructions showing over confirm text
* fix overlapping and going out of bounds with few entries
* add quitting preview and qr mode with B
* add touchscreen controls
* cleaner BETWEEN macro
* only allow changing screens with touchscreen when arrows are visible
* tabs vs spaces
* fix selecting an entry that's not there using the touchscreen
and allow holding for selecting individual entries (not using the arrows)
* fix crash when deleting all entries and downloading one with QR
* add indicator for already installed themes/splashes
threaded as not to slow down initial loading too much, and imo cool effect as they load
* optimization for theme installed check
* make icon swapping thread higher priority to prevent problems with searching the installed themes/splashes
* add indicator with number of themes and selected theme
* add X to reload icons if it breaks
* add touchscreen controls:
- toggle shuffle
- toggle preview
- reload icons
- switch modes
- enable QR
* more usable thread args
* fix crash when closing the application too close to launch
* add hack to solve the scrolling problem.
Warning: will cause some lag for about 1-2 seconds, so I recommend using the jump menu
this will be removed once the bug is figured out
* added awful way to confirm deletion
* improve solution for asking for confirmation
based on throw_error
* fix COLOR_WHITE evaluating to -1 (outside the u32 range)
* add confirmation for splash deletion
* less magic numbers
* part 2: installing themes
* fix simple theme install
that wasnt such a good idea
* fix shuffle count
* fix shuffle theme install
* change padding name