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
- With "Play Selected First" and "Shuffle" enabled,
another item was randomly selected when returning
to the list. This appears to be a bug
- With "Play Selected First" disabled, the first item was
selected. This appeared to be intentional, since, at least with
"Shuffle" disabled, that is the item that was played
back. This may not be helpful either, since it makes you lose
your place in what can be a long list. It is also not
consistent with the behavior of the File Browser. The current
selection should probably be maintained in all cases.
- At least according to the manual and the behavior of the File
Browser, "Play Selected First" should only apply when "Shuffle"
is enabled.
Change-Id: Ic1205477d5bf8b22f8f32dd6d31d3b9ceb5a2d24
Several places in the codebase implemented an ad-hoc form of pinning;
they can be converted to use buflib pinning instead.
Change-Id: I4450be007e80f6c9cc9f56c2929fa4b9b85ebff3
The disk doesn't need to spin up when the
database is in RAM. Results are usually returned
without any noticeable delay, so the splash only
creates distraction.
Change-Id: I04e5b7d2e00f045143dd86e0561091be3d8f9724
It was possible for the tag tree's buflib move callback to turn a
null pointer non-null. The tagcache_search_clause->str can be null
for OR clauses. Also ensure that clauses are zeroed on allocation
to ensure garbage pointers don't creep in.
Change-Id: Ic823a8eecc501eeaa75798066521e427a9a89190
new operators @^, @$
begins_oneof and ends_oneof
albumartist @^ "L|The L"
Led Zeppelin, The look
albumartist @$ "girls|Boys"
spice girls, beasty boys
Change-Id: I26ce3d8155d970a55e003f74e2f9478db76204f1
a lot of space is wasted when file indices less than 65535
entries should be more than 1 byte apart so use the LSB as a flag
when indices are > 65535 set flag to 0 and proceed as before
explicitly mark uniqbuf as 32bit
Change-Id: I54e06c152c369eb6c0322186fe2c1e9a1e6d940d