path: root/apps
AgeCommit message (Collapse)AuthorFilesLines
13 hours[Feature] resume TSR plugins after interruption WIPHEADmasterWilliam Wilgus6-124/+177
save tsr plugin path for later resume tsr plugin when user stops the interrupting plugin expand return of tsr_exit function to allow continue, suspend, terminate tsr plugins check parameter at start to determine if the plugin is being resumed Change-Id: I6fc70de664c7771e7dbc9a1af7a831e7b50b1d15
32 hoursplaylist: Remove control file cacheAidan MacDonald2-207/+65
Control cache entries cost 24 bytes per command, but cacheable commands are always less than that when written out to the file. We can actually cache *more* data by writing commands directly to the fd (native Rockbox has a 512-byte cache per fd) and it's much simpler. Change-Id: Ibb1b9ffa56ef17431b281419a04082e14d0cbd85
32 hoursplaylist: Unconditionally strip bogus dirs in playlist_peek()Aidan MacDonald1-16/+13
The intent behind the check is to only do this if the filename comes from an on-disk file. With the RAM buffer is gone this is now "always" the case. Change-Id: I4c26e32c482dde176b69a6071e9562e9955d7171
32 hoursfiletree: Remove dead code in ft_build_playlist()Aidan MacDonald1-17/+1
This checks for an out of memory condition when the filenames were buffered in RAM. The playlist no longer buffers anything in RAM so the code is unreachable. Change-Id: I4c2d0b2ac4ba3b7e7c94fe554a0cf7cb1a798e09
40 hoursplaylist: Remove in-ram filename storageAidan MacDonald2-81/+18
Use the playlist control file for directory playback instead of storing filenames in RAM. The implementation of that feature is very iffy and probably responsible for random crashes that may occur when skipping through directories rapidly. Change-Id: I3863940cd4542410d8046a3ca47508b5d97309a1
40 hoursplaylist: Clean up close_playlist_control_file()Aidan MacDonald1-20/+26
Move locking outside the function since most callers already hold the lock. Change-Id: I4b6774e2322c86962b4cc7a5f33d13cd4ffb1c7b
41 hoursplaylist: Add helpers for opening/closing .m3u playlistAidan MacDonald1-23/+39
This helps maintainability and ensures the opening is done consistently. Change-Id: I7805716182dfa93f917d54d40f8e420e87da16b0
41 hoursplaylist: Cleanup get_next_dir()Aidan MacDonald1-16/+3
Pass the direction as a signed integer to avoid jumping through unnecessary hoops. Change-Id: I1a36c3804b5f7103464f0d2ee69d060505261274
2 daysFix unified syntax in ARM inline assemblyAidan MacDonald1-2/+4
GCC 4.9 always emits assembly with divided syntax. Setting unified syntax in inline assembly causes the assembler to complain about GCC's generated code, because the directive extends past the scope of the inline asm. Fix this by setting divided mode at the end of the inline assembly block. The assembler directives are hidden behind macros because later versions of GCC won't need this workaround: they can be told to use the unified syntax with -masm-syntax-unified. Change-Id: Ic09e729e5bbb6fd44d08dac348daf6f55c75d7d8
2 daysUsing ARM Unified Assembler LanguageChris Chua4-22/+25
Change-Id: Iae32a8ba8eff6087330e458fafc912a12fee4509
2 daysplaylist: Simplify playlist modified detectionAidan MacDonald7-47/+30
Any modifications to the playlist (insert, delete, shuffle, etc) will cause the modified flag to be set. The flag is cleared when the playlist is saved. Code that generates playlists can manually clear the modified flag if appropriate; there is now a proper API for this so the tagcache and pictureflow don't need to resort to hacks. Change-Id: I8d3c723265a41db07a13de3f1d2abb0444528d57
4 daysplugins: Simplify plugin/codec API versioningAidan MacDonald6-24/+34
Replace the minimum version bound with a check on the size of the API struct. The version only needs to be incremented for ABI breaking changes. Additions to the API won't need to touch the version number, resulting in fewer merge conflicts. Change-Id: I916a04a7bf5890dcf5d615ce30087643165f8e1f
5 daysmakefiles: Suppress stray backslash warnings with grep 3.8Aidan MacDonald1-1/+1
GNU grep 3.8 warns about "\#" when compiling. The "#" has to be escaped for Makefiles and shell, but it isn't special to grep so grep thinks it's an invalid escape sequence. Change-Id: Ieb2607d42b7daa1939ca0101b915ec0c7afd4298
5 days[Feature] lastfm_scrobbler add option to set beep volume levelWilliam Wilgus1-7/+17
Change-Id: Id045f0f844b67f07ba5cd47d084f5d8f1841dad8
7 daysFix locked context fallthroughAidan MacDonald17-66/+20
Enabling locked actions for all softlock targets accidentally broke keylock on touchscreens because the generic touchscreen keymap was missed. Trying to lookup CONTEXT_WPS|CONTEXT_LOCKED returned the mapping for CONTEXT_STD because the locked version wasn't explicitly handled. But on almost all cases, a context's keymap does not change when the screen is locked. It makes more sense to mask out the locked flag and only check for it where needed. Change-Id: I65cda2de82950d272d4394fd772286699e7c3779
8 days[Bugfix] open_plugin_browse() not showing pluginsWilliam Wilgus3-5/+24
rockbox_browse() overrides the desired dirfilter with global_settings.dirfilter if you aren't using one of the SHOW_ modes > NUM_FILTER_MODES (which come with their own sideeffects) add flag BROWSE_DIRFILTER to override global_settings.dirfilter with browse_context.dirfilter add ability to set tc->browse to NULL to exit dirbrowse immediately Change-Id: I2f40d394f9dc0864b2041293eda219f7436a7bf0
2023-03-03Update english-us "translation"Solomon Peachy1-1/+52
Change-Id: Ief43b8b7c852af5fca0225b26a94801fdf6ab2e1
2023-03-03FS13390: Update Polish Translation (Adam Rak)Solomon Peachy1-76/+54
Change-Id: I7dc58071b37cf149a620d462dd73a28d482d6f0d
2023-02-15usb screen: honor HAVE_LCD_SPLITWolfram Sang1-0/+18
Clip+ displays the logo with the LCD split inbetween. Calculate the y offset to be directly after the split if possible. Thanks go to William Wilgus for fixing a similar issue and pointing me to macros I was looking for. Change-Id: I2183aec1149ce74ffb840716910d2051e4a284ed
2023-02-15[BugFix] font.c filename was movableWilliam Wilgus1-5/+2
stupid bug on my part font_filename was pointing to a movable alloc therefore that data could be moved out from under the returned pointer instead pin the internal calls to core_get_data and remove font_filename in favor of a function that checks if a filename matches the loaded font as this was all it was used for anyway Change-Id: Iebb47ffe3f81aa9d5e3968975f26d64283633ffc
2023-02-09tagtree.c optimize get_tag()William Wilgus1-59/+74
store tag length to shortcut strcmp this is nearly as fast as making a hash table using gperf its not the hottest path but its even slightly faster to shortcut based on string length if (tagstr_len > match->len) continue; else if (tagstr_len < match->len) break; but I found no measurable difference I don't think its worth the extra constraint of keeping tags sorted Change-Id: I4bb47cc6c5b8266d5f13c4ac78ae11d55ecb2d67
2023-02-07tagnavi make track submenuWilliam Wilgus4-70/+90
add some faster options to the track menu add a shortcut for basename formatting sort basename results filename - by sorted filename title - just title no formatting untagged items are unsorted as well title mm:ss - title and duration Change-Id: I90aea95051f6231580ef7f1fc08cd2d0d69601fb
2023-02-05Revert "tagtree remove unneeded strlen"William Wilgus1-1/+1
This reverts commit 8379c6eb07e7daf26ca74aac7f46c4e331743d84. Reason for revert: tcs.result_len is not the same as strlen(dptr->name) + 1 since it gets filled with filename Change-Id: I1264afc0a43ffe75adf1de00d27ab98e3adbca19
2023-02-04[BugFix] tagcache.c fix off by one error in find_entry_disk()William Wilgus1-4/+7
the tagcache counts the null terminator strlen however, does not no matching entries makes for a terrible amount of disk searching and a hang on devices without dircache to save them Change-Id: Id3460037199ee9853de0f11e4763a7ff11130e45
2023-01-29playlist: Annotate locks as read/writeAidan MacDonald1-70/+65
Distinguish read locks from write locks to aid converting the mutex to an MRSW lock at some point in the future. Everything is a write lock for now and a mutex is still used, so there's no change in behavior. Change-Id: I25aeed580580bdb0c3048fc7e1eaad1c32c30159
2023-01-29playlist: Optimize playlist_remove_all_tracks()Aidan MacDonald2-21/+89
This was insanely slow for large playlists. Implement it as a constant-time operation to avoid the O(N!) blowup, and add a new "clear" command to the control file to avoid flooding it with individual delete commands. Change-Id: Ied82d1cba015591edd583f2a2ff6772108f4e176
2023-01-29playlist: Remove unused PLAYLIST_DELETE_CURRENTAidan MacDonald2-9/+1
Change-Id: I4d1a8798aca249d343ca27a9973213d427b73963
2023-01-29pdbox: Move core thread off COPAidan MacDonald1-1/+1
This is all but guaranteed to be broken since pdbox doesn't use SHAREDBSS_ATTR or SHAREDDATA_ATTR, needed to share memory safely with COP threads. Judging by the codec performance comparison on the wiki, if the iRiver H100 and H300 can run PDbox on one core, PP targets should have no problem doing it - they are 2-4x faster even on codecs that don't have multi-core optimizations. Change-Id: I8f556013146cb670f69cc42e80b1c768ba0f74cd
2023-01-27fix red #2 d6fb80d4William Wilgus1-1/+1
Change-Id: I147e9b8f7c8e64234f55d39f9ac7c7253b065f9a
2023-01-27fix red d6fb80d4William Wilgus1-1/+2
Change-Id: I805490f660626f48220b41de3ee1026c260d0067
2023-01-27debug_menu database delay redrawWilliam Wilgus1-2/+10
only redraw every 100 entries Change-Id: Ie0bb54812c1b8341aa4d8303341904d17baa2890
2023-01-27Tagcache - Ramcache Move ref checks, speed up disk searchesWilliam Wilgus3-169/+228
move loading file reference to a separate function some optimization of the disk search function check tag length before reading the actual entry & reduce number of lseek calls this affects startup resume as well before tagcache is done loading Change-Id: I2bd2fc53c4870416ecd1a4034b34cb6984d8ad51
2023-01-23Fix yellow 65b3ff81c5Aidan MacDonald1-0/+5
Change-Id: Ibf99e4e6f98021b35d420520219287336bf25f0e
2023-01-23playlist: Fix dircache scan thread deadlocksAidan MacDonald1-221/+246
Fix deadlocks in the dircache scan thread caused by incorrect lock ordering. Mutating operations need to stop the thread to prevent it from accessing invalid data; this must always be done before taking the playlist lock to avoid deadlocking the scan thread. Change-Id: If719a8b28ed0b0b3eac068073581e606c4a5f58a
2023-01-23playlist: Fix mutex initializationAidan MacDonald2-9/+12
This is a one-time thing; make sure it doesn't happen more than once. Change-Id: Ic42f48e5714dff2906c252ecd091989d2d6e5a86
2023-01-23playlist: Refactor control cache flushAidan MacDonald1-48/+53
Make background control file flushing work on non-dircache targets. It has nothing to do with dircache and doesn't belong in the dircache scan thread. Change-Id: I3f39261ccaebb5dce69e7db3d2e0c0c0c54f640b
2023-01-23playlist: Remove volatile from indicesAidan MacDonald1-1/+1
This is not necessary. Volatile doesn't create a memory barrier wrt. non-volatile accesses and there are no interrupts involved, so there's no reason to use it here. Change-Id: I78299e2f318e68735364601b3bc2aa036e71130e
2023-01-23playlist: Remove current flagAidan MacDonald2-5/+3
Only current_playlist will have it set, so compare pointers instead. Change-Id: I46dc7baef9699990962176db7c8796bba1e4809d
2023-01-22Use perceptual volume scale for volume barsAidan MacDonald2-4/+9
Display volume bars using a perceptual scale instead of the linear dB scale. This makes adjusting volume with the bar a lot more usable on touchscreen targets. Change-Id: I2db010486e6ba17f9d08202ee74a0b509f2cb434
2023-01-22Add perceptual volume adjustmentAidan MacDonald15-35/+219
The perceived loudness change of a change in volume depends on the listening volume: at high volumes a 1 dB increment is noticeable, but at low volumes a larger increment is needed to get a comparable change in loudness. Perceptual volume adjustment accounts for this fact, and divides the hardware volume range into a number of steps. Each step changes the dB volume by a variable amount, with most of the steps concentrated at higher volumes. This makes it possible to sweep over the entire hardware volume range quickly, without losing the ability to finely adjust the volume at normal listening levels. Use "Volume Adjustment Mode" in the system settings menu to select perceptual volume mode. The number of steps used is controlled by "Number of Volume Steps". (Number of steps has no effect in direct adjustment mode.) It's still possible to set a specific dB volume level from the sound settings menu when perceptual volume is enabled, and perceptual volume does not affect the volume displayed by themes. Change-Id: I6f91fd3f7c5e2d323a914e47b5653033e92b4b3b
2023-01-22Fix red dc83963962Aidan MacDonald1-1/+1
Change-Id: I196268c6f6bc4f6e2d8f2cb7dcc3a12218c5d9d4
2023-01-22Add helpers for converting to/from normalized (perceptual) volumeAidan MacDonald2-0/+110
These routines were taken from alsamixer and converted to fixed point for Rockbox. Change-Id: I64e8bf08da02b1e6e3ef10fdc78254bf8e87ff20
2023-01-22playlist: pin dircache fileref buffer during background scanningAidan MacDonald2-70/+68
dircache_search() can yield, which would lead to memory corruption if the playlist dcfrefs buffer is moved at that point. Prevent this from happening by storing the buflib handle and pinning the buffer while scanning the dircache. Change-Id: I28b122de283953dd6d54c1d00598759f5bdcbe93
2023-01-19database: make parent tables work with pluginChristian Soffke7-76/+205
Enables the use of PictureFlow and the Properties plugin with parent tables of ALLSUBENTRIES, such as an album or album artist, instead of individual tracks. Change-Id: I18c4779ed116a48c732ae32b9629e7e0d93ce7c8
2023-01-19PictureFlow: fix_path_part checked too many charsChristian Soffke1-1/+1
Shouldn't have any effect if album_name is null-terminated, but still.... Change-Id: I51acb6c7858347d3bd922758ac4f0fcde349c9e1
2023-01-19plugins: lrcplayer: eliminate redundant functionChristian Soffke1-17/+1
Change-Id: I93fff9eb616f08bdad021180f83fea1fdb758870
2023-01-19PictureFlow: id3 functions refactoringChristian Soffke6-203/+308
- Move multiple-id3 functionality into lib - Extract retrieve_id3 function In preparation for using these functions from the Properties plugin. Change-Id: I7252581340680e32df763f1f4b41646a055fe19e
2023-01-19PictureFlow: Eliminate 'prompt' launch parameterChristian Soffke1-12/+5
This was added in commit d553bb1 and doesn’t seem to be used anymore. Return PLUGIN_OK since an error message is already produced. Change-Id: I5eaf7e7eb7c850a6fa9c3d2717c440e335f5efd1
2023-01-19chunk alloc add buflib_get_pinned and chunk cachingWilliam Wilgus1-5/+3
Change-Id: Ia581656793b8ce9b80545705cfbba0fb225bb616
2023-01-16playlist: enable queue sendAidan MacDonald1-3/+7
Apparently queue_send() silently falls back to queue_post() if sending isn't enabled. Doesn't seem like a good idea, as post and send are definitely *not* interchangeable! The playlist code relies on queue_send()'s blocking behavior to prevent the dircache thread from using potentially stale pointers. Change-Id: Ibf4b0def3bf9c96cb2fe80cd75043b7ce1dcf250