- centralized stop function
- freeing the struct not from the thread while waiting on handle in it
- thread not detached
- maybe fixes hang on exit from HM in ndsp status check loop
icon and name get extracted from the dlc data
requires libctru from commit 5f13628dac75206f0c97d29a7427ce8284d910f1 or older (added the am commands necessary to find the dlc data)
Makefile changed to reflect the macro change in unreleased libctru
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