Fixes possible crash in case of pathological
UI vp dimensions, when attempting to clear a
QS item's vp.
E.g. https://github.com/federicoplg/musicOS
(commit c5e8570) configures a 1x1 UI viewport
at x=319 y=239, resulting in left/right item
viewports that have negative width or height.
Minor additional simplifications with no
effect on behavior:
- Combine actions requiring cleanup in a setup function.
Put it below the existing cleanup function
- Rename quick_screen_quick to quickscreen_show, and
quickscreen_run to quickscreen_main
- Iterate over items using FOR_QS_ITEMS macro
- Remove quickscreen_draw_item's int_value
- quickscreen_update: immediately continue if qs skinned
- Remove some obsolete #includes
Change-Id: I49aea3be837b861bdcd5132e84fef858df72327b
This commit does the following changes to the 3ds port:
- Rename the target from ctru to 3ds.
- Rename all files and functions with the ctru naming convention to 3ds.
- Created a new file and folder structure that will better integrate future console ports that share the same codebase.
- Fixed a buffer overflow bug in pcm code.
Change-Id: I17c6f86df64eb99dd2b653485d70832ff46b2ba8
Regression introduced in 7a281ec.
Fixes crash with the "remember last folder" setting, when the
saved dir has since been removed:
exit_to_new_screen in dirbrowse calls gui_synclist_scroll_stop
when update_dir returns ≤0 for the number of dir entries.
But synclist has not been initialized by update_dir when it
returns early with -1 due to either tagtree_load or ft_load failing.
Move gui_synclist init further up in update_dir, so that when it
returns, the list is guaranteed to be initialized.
Change-Id: I62aa742a3d0121d5034440ff134992034e13fd90
Quickly reveal a database item in the File Browser.
In case of entire tables, the first entry will be revealed.
Change-Id: I4191f27ea2ab7cacbe375719314d7eb23301fd07
This commit adds changes to the original rockbox sources.
Note: the port files, functions, folders, etc., will be referred
to as 'ctru' to avoid using the Nintendo name elsewhere.
Change-Id: I0e2d3d4d2a75bd45ea67dc3452eb8d5487cf1f5a
When the database isn't loaded into RAM,
or the "quick" load setting is enabled,
filenames for tracks must be retrieved
from disk.
With a single track selected, this
can cause a delay before its context
menu is displayed.
Since filenames are only needed after the
user has selected something from the menu,
it makes sense to defer retrieval until
disk access becomes inevitable.
Change-Id: I72b57eff3102b50f3e19441119e20aad903b1f2b
When the Playlist Catalogue first appeared in the main menu
in 2011 (FS#11808), the 'Playlists' menu item was renamed
to 'Playlist Catalogue' which seems more verbose than is
necessary these days.
Since we don't have a 'Playlist Catalogue' menu item in the
onplay menu anymore, either, LANG_CATALOG can be eliminated.
Change-Id: I7f38b0847e9b982506371f4a4b473d1fb2551ad0
Make the suggested playlist filename for special
entries such as "[Random]" or "[All Tracks]" a
bit more descriptive, by mentioning the current
table as well, e.g.:
"The Beatles [All Tracks].m3u8", instead of just
"[All Tracks].m3u8"
Change-Id: I43d9386c06081540cdcae715afc0b0351857633d
can't have it both ways blocking directories from filename
makes shortcut folders browse into the folder but blocks
the folder when the file browser loads it causing you
to be in the wrong folder upon resume
I wanted a way for the user to be able to leave the slash off
so ensure shortcut folders have a trailing slash (on load)
Change-Id: I9ea173a90a8c12291a159e7d30ee1076e0ca5d3e
optimize the index search loop using mod()
instead of checking index and then scanning we can start at index
and roll over saving a compare in the process
Change-Id: Ie54fbf1ca0131db8914985b654248eeb8d725a82
* 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
rockbox_browse() set its own *dirfilter and then may neglect to restore it
set_current_file_ex()
can take a unified path and file or separate path and file
only issue is when you send a folder and don't have the final slash
its then interpreted as a file and current file is set to it
meanwhile path is split and you end up in the parent dir
instead if filename is null check if path points to a directory
if dir_exists(path) then we will use it as is and set filename to ""
Change-Id: I6beaa91141c1a4025cdfac5d6ba426137146c212
remove nvram and use the existing settings framework for it
add a crc check to the user_settings data to see if we need to save
the user setting file or if we can just save the status file (resume.cfg)
move volume to the system_status struct so we don't write the whole settings file
over volume changes
allow user to still export volume with save sound settings
allow the user to also export pitch and speed
name the file .resume.cfg
Rename all the SYSTEM_STATUS save file variables to TLAs to save space and
discourage tinkering
Cleanup DEBUG_AVAIL_SETTINGS output
when saving user_settings it calls status_save as well this cause the resume
file to be written twice. instead remove the callback for status_save
when setting_save is called
remove header text when saving .resume.cfg
convert status_save() to status_save(bool force)
add SYSTEM_STATUS_UPDATE_TICKS
for ATA device set this to 5 minutes
since we arlready wait for the disk to be up before saving
we don't want to miss our window
for all other every 15 minutes
that way if the battery is too low by the time shutdown comes around you
don't lose much progress
Change-Id: I27214ffd6e5d5494ee5ca83b14f04a41ba426ad7
In 2c4c1b9, I missed the fact that we still need these,
so that slashes in names aren't interpreted as a path
separator.
Change-Id: I2df0745669c4673497a506a99e754c63dcba045e
ultimately its only used as a way to prevent reentry
but coverity correctly identified the possibility..
Change-Id: I4738e52782ad4cac6134394238345a0491a50382
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
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
When adding files to an existing playlist from
the database or file browser, Rockbox returns to
the root menu afterwards.
Appears to be a regression introduced in commit 72c539d
for the file browser. For the database, it has only
become noticeable since commit 188f025
Change-Id: Iac48fe74d20d25f083005f6ebff5abc7ee425080
current_lists holds a pointer to whatver the current list is only problem
is when in one of the function type menus like the plugin viewer, playlist viewer, shortcut menu
probably a few others on usb unplug current_lists holds stale data and updates the list however
the data has already been freed when the function returned
the issue with db browser was a return of true from dirbrowse() which was the value 1 which is the
enum for GO_TO_DBBROWSER
Change-Id: I7349dfab2752e11f8e746925501740e959851cd5
the math
size_t endpos = filename - path;
if (filename && endpos < MAX_PATH - 1)
should handle it just fine coverity doesn't think so
Change-Id: Ifa0494e56b40c8ab0081ebc771024a45cb24eb76
26c612f breaks file selections if you have filename extensions disabled
and filenames spelled out, because it modified the filename in place
breaking the caller.
Instead of using a lot of space to make a private copy, the simplest
approach is, if we strip the extension off, simply restore it
afterwards.
Change-Id: Iaf560e813053b8030c620bbed6d061a2423338d5
add sorting directories as files
move picross files to a hidden folder
use directory for lua_scripts, sgt_puzzles
make plugin browser able to handle 1st level directories
Change-Id: I30852d71dc992c378d5790756e94f06f5a2e9bef
When the sd card is mounted into the root namespace the database
picks up files through both paths
previously we hid the mounted drive but this causes issues with users
databases when the drive letter changes
Adds a way to keep track of volumes mounted in the root namespace
Hides the enumerated volume in root
Database:
we can just parse the root directory ('/') and get to any mounted
volume but we can also enumerate a volume in the root directory
when this occurs it leads to multiple entries since the files can
be reached through multiple paths ex, /Foo could also be /SD1/Foo
Instead we will attempt to rewrite the root with any non-hidden volumes
failing that just leave the paths alone
Change-Id: I7bdba8cfaf63902d2a3852d28484bcf8ca317ebd
make sure we have a chance to get the dirfilter otherwise
it may be rejected
adds some sanity checks and safeguards too
Change-Id: Ibdad288ace0c8bf6ac7b8f46722a43aebead829e
since the plugin browser is now closed when running plugins
rb->set_current_file() had no valid browser context and used 'random' memory
instead
also adds a way to discard levels so we can load the desired directory
instead of returning to the previous
https://forums.rockbox.org/index.php/topic,54694.0.html
Change-Id: I624246e56d42972bf6a1ce566a209b745de6f30b
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
It was only used in filetree.c. It's still implemented in Lua so
scripts using rb.playlist_add() won't break, but has been removed
from the Lua API "backend".
Change-Id: I5625a47f0692456008c6b10dee14755151d22f29
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
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
Prefer to use designated initializers to avoid having to specify
unneeded parameters. Non-initialized members are zero-initialized
by the compiler.
Change-Id: Ia6a03c45cb3ef0b30f458d7d0ae1604a350c737c