Wrong title is due to the VIRT_PTR being 0 so when a NULL
string is passed through P2STR() you get langid(0)
that was 'Yes' now it will be 'Rockbox'
the crashing menu was due to a call to retrieve entries that wasn't guarded
against getting called on a menu with no entries
g#5911 introduced this path to call custom_action for shuffled track adding
Change-Id: I3918debbe2e79dfc9595df56b05b1ae59ba94317
while its not a particularly hot path it still gets called upwards
of 1000x on startup
with a little pre processing we can make it faster than even the
prior version
check first letter before calling function
move strlen check to after the case match
Change-Id: I0108aaf9828501b57b0950fbc24cd478a9eeacc1
this is not a hot path only runs at start-up and tagnav reload
so speed is not so much of a concern
we can split the data into two separate tables to
remove the padding and allow symbols to be stored in uint8
(highest symbol <128) and do strlen at TOU
use uint16_t for get_clause()
Change-Id: I0f8663d0de9cac102f1d58b43bf200272754c466
- The "Special character" entry will show all special characters (non numerical + non letters)
- The numerical entry was bug, and could show some special characters from the ASCII table. It is now fixed.
Change-Id: I001fb322fab81918996e15e4d0ca6b7c9e5160af
* All tagnavi.config entries pulled into language files
* Database viewer looks up LANG_IDs from the entries
* If we find a match, we can translate and voice these entries
* Add (disabled) mechanism to allow voicing database metadata
Original patch by Paul Sauro
Modifications by William Wingus
Further modifications by Solomon Peachy
Todo/Problems:
* Current Tagnavi headers are rather awkward in English
* Can't voice the "By first letter" alphabetic entries
* No mechanism for generating talk clips for DB metadata
Change-Id: Ic276ccda1bd8aae550d38be852bae4c6f697cd47
pretty sure this is a false positive by gcc but we know what we expect
to recieve so add a small buffer to shut gcc up
Change-Id: Ibbd7c995ec2f0ade4bfbcb1d659f1cae5d4f1de3
this adds a new command %byfirstletter
%byfirstletter "custom_track" "Track A to Z" "title"
^ command ^menu name ^menu title ^subitem
need a better name for subitem btw..
this patch also allows us to tell when we are in the BFL menu
by checking customaction == ONPLAY_CUSTOMACTION_FIRSTLETTER
we then enable spelling of the letters in the menu
it spells Numeric too but that shouldn't matter with the upcoming voice patch
Change-Id: I59815f697a4ef84a8cb540783b620d15f6670e00
ata_disk_is_active() behavior with SSDs has reverted, so we want to keep this.
This reverts commit ef19fa4408.
Change-Id: I29f08617285747c17a52352bd7bba4069e71cde6
Since commit e0df995 storage_disk_is_active may be 0
even if there is no disk that needs to be spun up or
device to power on, so it doesn't really make sense
to check for it, anymore, in order to decide whether
to display the loading indicator.
For remaining devices with spinning disks, the noise
or vibration of the disk spinning up may serve as a
sufficient signal when loading a plugin, that the
device isn't frozen. Plus, for the tagtree, search
progress is displayed after 0.5s anyway.
Change-Id: I5791725e2388d7113818a358204968d8a4e6f843
Code has no effect since commit a0e95c8.
Functionality is now handled by the playlist_insert_context_add function
Change-Id: Ie91f605bd7a7d03556fa70d195a06bc55866741d
I forgot we had duplicated code between playlist.c and tagtree.c this saves
a bit of space and should speed up adding tracks a bit
further I noticed a buf here where there was the potential to return without closing
the opened track search
Change-Id: I15ed8447fc4fe13de5bfeb9fbb59b151e2fbf36a
If you have a lot of tracks loaded in a database view and play a
track it builds a playlist and puts you into the wps
if you stop playback and exit the WPS you are immediately
loading entries that were just loaded
if you return to the database again reload data thats probably
still there
this patch gets a crc of the data and if it matches reuses it in
the tagtree rather than reloading it
Change-Id: Ice3aba7569f19afdd1627ba18c2dc781f98cbf93
this is a bit cleaner without so much ram (or code) used
Credit to goes to Paul Sauro (OlsroFR) as this was his idea
if available space exists in the pluginbuf it uses fisher yates
shuffle to get good probability
and falls back to random permutation if not
Change-Id: I413078a48314ce4c6f3722c78e0858a407b7b46e
This improvement brings a huge performance improvement to start a random mix of your library. Previously, the only way to do this was to increase the size of a playlist with absurd sizes number. Now it will respect the limitation but will insert random songs from the current view.
Database: Add true random songs in playlist if it is gonna exceed its maximum capacity
More context is available here : https://www.reddit.com/r/rockbox/comments/1ez0mq4/i_developped_true_full_library_shuffle_for/
Also :
- Improved layout in the DB browser
- New default max playlists capacity is now 2000 on old PortalPlayer targets to give a better user experience and not having to wait dozens of seconds while creating a playlist
- "Show insert shuffled" option is now true by default
- Add a new shortcut to play all songs shuffled in the DB browser
- Now the feature is fully optional and enabled only on targets that have more than 2MB of RAM
- Add entries about this feature in the manual to explain it to the users
Change-Id: I1aebaf7ebcff2bf907080f1861027d530619097c
Change-Id: I3354923b148eeef1975171990e814a1a505d1df0
max I could get was 5 with the default tagnav cfg
but we allow user code too so might be possible to exceed the depth
Change-Id: Icf37916400b464be4f75a723d64a71cd6c4be1fb
Track Info can now be displayed for the set of
all tracks contained in a playlist. This lets
you calculate a playlist's length, for example,
even if it is not currently playing.
This functionality can be accessed from the
existing "Properties" screen for a selected
playlist file. A line has been added at the
very bottom to show Track Info.
Change-Id: I311532b7cfa9e29d46c0cd5623ba4c06c1dd5b5f
Navigating to track listing by Filename in the database
passed the whole directory to the playlist and track info plugin
insead of the track filename
this was due to 'tag_virt_basename' not being recognized as a valid
audio file
Change-Id: I3d1cd0b6998a2e55d4f7d70711af9ced46cf2c44
File names exceeding the max length will not be retrievable
from the database. Skip such files, instead of cancelling
the operation at that point.
Change-Id: Ia6bc8a53be9ec181eb836956cc3d8b059b2d024f
The modified state is now an explicit flag that has to be
set whenever a user-triggered modification occurs. This is
recorded in the control file to ensure it doesn't get lost
after resume. There may be some places I missed where the
modified flag should be set/cleared, but it seems to work
well enough right now.
Change-Id: I3bdba358fc495b4ca84e389ac6e7bcbef820c219
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
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
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
This reverts commit 8379c6eb07.
Reason for revert:
tcs.result_len is not the same as strlen(dptr->name) + 1
since it gets filled with filename
Change-Id: I1264afc0a43ffe75adf1de00d27ab98e3adbca19
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
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
You could only add single files to playlists
from the database browser before. This
enables adding any database selection to
a new or existing playlist.
Change-Id: I811c7167641c589944bb2afc18dcc1d299a7b979
A changed selection only caused the item
history for deeper levels to be discarded
in tagtree_enter, when you were descending,
but not in tagtree_exit when you were ascending
the menu hierarchy again.
Change-Id: Ia40fa47980a05c2569e8af04e928b06130aa1f33
TagNav.lua adds Reload to the Custom View menu of tagnav to allow users to make new search queries on the fly
previously you had to reboot the device to do this
I was getting a data abort prior to calling tagnav_init now but it worked fine if I copy pasted
the contents of the init function
I'm not sure how this fixed it but making a static init function makes it work as intended
is it a race some weird thing with the compiler??
Ideas??
Change-Id: I7fd6c50f929d3ac2d9ecec5336942288e9213ad5
unfortunately most of the overhead in searching for <Untagged> occurs in
reading of entries so changing searching the resulting string faster doesn't
do much good but any we don't need this strlen call since its already been
computed
Change-Id: Ia2815a6e7d75237366977632f9b0bc7999254096
replace applicable calls to strlcpy with calls to strmemccpy
which null terminates on truncation
in theory the strmemccpy calls should be slightly faster since they
don't traverse the rest of the source string on truncation
but I seriously doubt there is too much of that going on in the code base
Change-Id: Ia0251514e36a6242bbf3f03c5e0df123aba60ed2
The database only remembered what you'd selected when
ascending the menu hierarchy again from a lower level.
Now it restores a previous selection going in the other
direction as well, when you enter a new menu, as long
as the selection at the current level hasn't changed.
Change-Id: I5068287ff758a7cfebf1428e9b0ffd30e6ef541e
- gui_synclist_select_item will be called in the update_dir
function by dirbrowse()
- it is unnecessary to call when the tables opened by
tagtree_enter are not being displayed but are only being
used for inserting table contents into the current playlist.
Change-Id: Ib768b457b2baa7eb85cf73c6339fd4f603d03d90
Database and File Browser were sharing
each other’s selected item history before.
Since the database isn’t browsed
recursively, it’s probably unnecessary to
include its own history in the tree context
and its backups, saving.a little bit of memory.
Change-Id: I87c9aed6f7056bc481b8b7299089851ef28f9bc5
- Fix FPS counter overlapping
the artist string when
"Show album title" was set to
"Show album and artist at the top"
- Fix disappearance of center album
if certain Settings menus had been
accessed while list of tracks was
showing and you then returned to the
list of albums
- Fix disappearing album artwork after
cache had been created until you started
scrolling
- Enable context menu even if WPS
integration is disabled
- Make splash screen appear only
on first launch and for database
updates, when it is actually on screen
for long enough
- Eliminate 'Loading' splash if tagcache
is in RAM
- Show both album and artist by default on
displays whose height > 100px
Change-Id: Ie70c0d9093789294d288a4f88338ee4a588bf4a5