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
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
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
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
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
- Move multiple-id3 functionality into lib
- Extract retrieve_id3 function
In preparation for using these functions
from the Properties plugin.
Change-Id: I7252581340680e32df763f1f4b41646a055fe19e
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
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
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
move seconds and sizes to arrays indiexed by enums
use a loop for the display and talk of each
stop exiting on SYS_EVENTs
Change-Id: I49d5b9827df4e711b38326e5fef3c54292000370
bad tracks now get skipped with a message at the end of scanning
rather than an error killing the count
Change-Id: I6d8c14ce00e78416b772bc5e9093a889351bc3de
Sansa Clip and Clip+ have a split monochrome screen
some versions have a dead line of pixels
having text split at this line makes it hard to read
move text picker below this split on these devices
Change-Id: I1ebcb4c4c7b1ea950f38e35fed06ed85437a657f
This reverts commit ebebef5566.
Reason for revert: I don't want to get too deep into this till I come back to the keyboard rewrite (hopefully)
Change-Id: Ia273f1a19a042be2dd0f1ee46690c03f2865cd95
Gate buflib_get_data() checking, debug printing, and buflib
integrity checks behind individual defines in buflib.h, and
turn them all off by default. If needed, they can be turned
on manually when compiling.
The buflib debug menu is only available if debug printing is
enabled, so after this commit it will no longer be included
in normal builds -- it isn't very useful to end users.
Change-Id: Iab25b7852bc7c5592ce04c9c45762046a87d5bc3
dc_thread_playlist was asking for invalid indices
since previously the name buffer would have been valid
it just got whatever junk data was left over
add dc_discard_playlist_pointers for HAVE_DIRCACHE targets
this allows the dc_playlist_thread to stop its current lookup loop
Change-Id: I6f25b97b8c4e314d27c5e1e6ff0925b5a3e93f26
dc_playlist_thread may continue loading pointers even while
underlying indices are changing instead stop the loop by marking
pointers as clean and rebuild later
Change-Id: If154f673b4af8d6e9c364499d58f1321834a76a4
This reverts commit 89c021fbfa.
Reason for revert: crash when playing on disk playlist then playing a directory as an in-ram playlist
Change-Id: Ia5cf5da9f46f8c10c5c0f3707e7978c05664b8a4
Context menu gains new option to view
metadata for individual tracks or albums.
Will display an album's length and total file size.
Other fields are displayed only if they are identical
across all tracks (except for the album year, which
is determined by the highest value encountered).
Change-Id: Ibc14cfaf2cb3d91b8d1cfbee05c6261db4975355
give user option to load playlist from disk when
namebuffer is too small -- max_playlist size still
limits the total entries but filename length
won't stop them from playing the directory
Change-Id: I1787689417661ea670a211f575f2c52e84465869
"Play Next" instead of "Insert Next"
"Add" instead of "Insert"
"Play Last" instead of "Insert Last"
"Add Shuffled" instead of "Insert Shuffled"
"Play Last Shuffled" instead of "Insert Last Shuffled"
-"Queue" items hidden by default
- Shuffled options hidden by default
(Both can be enabled in options)
Resulting default menu:
Playing Next...
Play Next
Add
Play Last
Play
Change-Id: Ib0c07a8077ab4b10c2dbc7af33516adcd0d4b83a
Use action-oriented and more descriptive titles
"Add to Playlist..." instead of "Playlist Catalogue"
- "Add to Existing Playlist" instead of "Add to Playlist"
- "Add to New Playlist" (unchanged)
- "Playing Next..." instead of "Current Playlist"
In WPS context menu:
- "Current Playlist" instead of "Playlist"
Change-Id: I5cce9e317676537988682f46ac6b920598af3b9e
Moves options for configuring:
- Playlist Directory
- Recording Directory
- Start Directory
into a single menu.
Necessary prerequisite for giving the
"Playlist Catalogue" context menu item a title that's a
little more action-oriented ("Add to Playlist…”).
Change-Id: I4ee08fc67d5350c38ae1a57cb345c4ed1082d0b5
In commit f3358eb, the Properties plugin started using the
Track Info screen for audio files, which didn't show when
the file was last modified. This adds it back.
Change-Id: I3ce519da234a4bcadab1d64b67de0298cada8f6e
The Properties plugin and playlist viewer have each
started using the existing Track Info screen.
In both cases, it may not be necessary to push a new
activity. Which eliminates the need to perform an
additional skin refresh.
I've also noticed at least one theme in the wild that
assumes ACTIVITY_ID3SCREEN will only ever display
info for the currently playing track (as it did
previously) and adjusts the skin specifically for
that purpose.
Change-Id: Ic436d0d4e075a865225839a524387ff2b9058428
Commit 1930ca8 repurposed the 'Logo' plugin's
logos, whose dimensions are different from those
used by show_logo, which was previously called
to display the logo.
Change-Id: I4d0c5f597dadfdadae244d895518bbcfefebb581
No clue if our implementation would suffer the same fate
but the C standard states:
Where an argument declared as size_t n specifies
the length of the array for a function, n can have
the value zero […] pointer arguments on such a call
shall still have valid values, as described in 7.1.4.
Change-Id: Iee0dd9c948c6ad4b0d96309053127ab11111f04c
Increase the default limit to 5000 files for targets with at
least 8 MiB of RAM (the vast majority). The upper limit of the
setting is now 40,000 or 100,000 if you have at least 8 MiB or
16 MiB of RAM, respectively.
Update the manual to mention that this setting can also impact
the database browser. "Using the Database" already mentions it,
but it's useful to say so in the setting's description.
Change-Id: I6f204eec6cf2ccaea2af81d2fa287f92476eed4a
Do not spawn threads on COP as PP lacks cache coherency between cores,
making it unsafe to access cacheable memory that might be accessed by
the other core.
Change-Id: Idf910e9cc9dad3f0bf5bdb63800ed4abaa97558a
fiio m3k native is currently the only player with
defined buttons different from the standard
mapping.
This allows the user to use the keyremap plugin
to specify differing keymaps for their device in the locked state
Change-Id: Ie0b447bba0d5978e8d23fed423df30c794afc6f9
Add context flags to keyremap
CONTEXT_LOCKED
CONTEXT_REMOTE
CONTEXT_REMOTE_LOCKED
--CONTEXT_PLUGIN-- Removed -- Plugins need a custom action list
supplied and a method of supplying them
Change-Id: I5201d275ad0ab6130c2d05d5afb0c450f5c1746c
keyremap doesn't have a notion of locked contexts
add CONTEXT_LOCKED after keyremap so users don't have to specify
multiple context flags to get Advanced keylock working with keyremaps
Change-Id: I17b3f5b2ac9bf23277543fb04d66d6d90d16557f
browse_context was missing its root causing a NULL deref
Export User Keys was looking for at least 4 entries when it only needed 3
Change-Id: If92ecccb36bd54e1b850ac2a969fe262b5d7fd14
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
After finishing a game of Xobox, background and
foreground were both the same color, making the
high score table invisible..
Change-Id: Iab4bad0e7d3f247a4b600ff9ec8e57207bc3832f
Missing from faa2cb9
- Thrust is now Right instead of Menu
- Teleport is Left instead of Play/Pause
- Pause is Play/Pause
Change-Id: Idd9758a68250bcfb2adec14589dffbe1a091511c
- Reduce need to press multiple buttons at
the same time to quit a plugin
- Have "Menu" be default way to quit plugins or
to access plugin menu
- Fall back to (Long) "Select" or Long "Menu"
in cases where Menu button isn't available
(e.g. in ImageViewer and many games)
out of scope:
boomshine, lua_scripts, Rockpaint,
Doom, Duke3D, Pacbox, Quake,
Sgt-Puzzles, Wolf3D, XWorld,
Minesweeper, Pixel Painter, Spacerocks
Change-Id: I6d4dc7174695fe4b8ee9cbaccb21bdbfe6af5c48
nets about 5k on clipzip (less on mono, more on others)
to move rockboxlogo to .initdata section
Remove show_logo completely and move to main.c
remove plugin stub
give credits plugin its own copy
credit fallback is now show_info()
Change-Id: Id9ed787e605ed29e7ab1e7a74d3821cd0f840ed4
Prefer to use designated initializers to avoid having to specify
unneeded parameters. Non-initialized members are zero-initialized
by the compiler.
Change-Id: Ia6a03c45cb3ef0b30f458d7d0ae1604a350c737c
Now that all users have replaced setting IDs with direct pointers,
find_setting() and friends don't need to return an ID value.
Change-Id: I8c5c31bb68d3bca5350d43538335265a55fd5517
left the union with function(void) and function_w_param(param)
as a few areas might still need to use both (onplay.c)
there might be a few I missed yet..
Change-Id: I593a6875301923e19ba04ad1b0f3173dc9ebdf1f
just a few updates to open_plugin save a bit of space by granting access through a getter function
Change-Id: I2c0eaa1ade867510798b213006064ee1c00aa016
table settings have a list of valid values when
they do not have F_ALLOW_ARBITRARY_VALS flag
they were not being treated as such
Change-Id: Ib02643a65ee4fc2abb1be8563a1849076de2f708
1) the plugin return value isn't necessarily respected.
2) the screen will be updated regardless, before
the WPS is displayed, which means the skin may
appear in an "incorrect" state for a moment.
It is therefore better to simplify this to a single
condition.
Change-Id: I723e6fe4862172075b9a4814080f612c2b2fb490
idea here as discussed with chris_s is to allow flags
in the hotkey_assignment struct to change how items are displayed
Change-Id: Id4cf1d79fbe3ff8f5590b9a863fccf00ddd457f9
chris_s noted:
When you set the WPS hotkey as a QuickScreen item and shuffle through the options,
it eventually gets to the "Open Plugin" option and will show the File Browser,
clashing with the Viewports of the QuickScreen
Change-Id: I3addbbbac5842f89c000c155484d7cb934dc500e
Lang_id keys take LANG_LAST_INDEX_IN_ARRAY for the checksum
spinning disks did not have the code to do so
Change-Id: I617e1a5462d8d6c4830a9b59171bdd7167d5e7a1
tree_get_filetype_voiceclip is called after init it shouldn't be marked as INIT_ATTR
add _init to the functions & data that are used at init only to be a bit more clear
Change-Id: I8eb1914560b782c2c0fdd7649e761f94e382d5cb
Eliminate flashing when plugins are launched
from WPS, by not enabling the SBS, and by
deferring other lcd updates.
Also prevents flashing root menu activity when
returning from plugins.
Change-Id: I7d761867027f2275c4ab8e16ada3107c7ba0be6e
My impression is that the waiting time for plugins
is only ever significant if a disk needs to spin up.
In other cases, the experience seems nicer
without a 'Loading' splash, especially for
often-used plugins, such as 'Properties',
when it is launched from the Database or
from the File Browser.
Change-Id: I018ccb13466fa618ef089b6dc7714db38cffd9b6
ToggleMode is remapped to BUTTON_SELECT
Reset is remapped to Long BUTTON_HOME or Long BUTTON_SELECT (avoids accidental reset by pressing BUTTON_SELECT)
Change-Id: I6fc4050c66db2d7db7ec899f9c83b70754fef9df
Since synclists are now re-initialized after leaving
Settings menus where the callback was used, it
shouldn't be needed anymore.
gui_synclist_init_display_settings can also be made
local to list.c now.
Change-Id: I674e4da49153440b48298fed7c4d98b421b7beaa
1) Adds way to pop activity without refreshing the skin at
the same time.
Activities are sometimes popped in immediate succession,
or one activity is popped before another one is pushed right
away. This can lead to the UI appearing glitchy, due to an
activity only appearing for a split-second, which is especially
noticeable with complex skins that change the dimensions
of the UI viewport depending on the current activity
To fix this, prevent superfluous skin updates
* when switching between:
- WPS and browser
- WPS and Playlist Catalogue
- WPS and playlist
- WPS and Settings/System/Plugins
* when accessing Track Info or when displaying
bookmarks using the context menu on the WPS
* when switching from QuickScreen to Shortcuts Menu
2) The playlist viewer activity was pushed & popped
redundantly by playlist_view.
----
NB:
Behavior has remained unchanged in all instances of the
code where pop_current_activity() has been replaced by
pop_current_activity(ACTIVITY_REFRESH_NOW).
Change-Id: I56b517b8c9dba823a9fed3a3f558d7469dcea9fd
Similar to 59f3f43d. It makes it behave consistently with tree/playlists other menus. So it's possible to exit option select using Back button on Clip Zip or Power button on Rocker
Change-Id: I93fe71ba2222ae16d59f3ba4cfbbedad3fb2568b
the underlying global buffer fo bookmark is overwritten by the read function so
instead make a hash of the playlist and track names
might needa better hash but hopefully CRC32 is sufficient
Change-Id: Ie25dbb62e664b804e4f858d9e0cc248fdc8c9895
90bc769 strips spaces from the settings value, but it
goes to the first space rather than just stripping off
the last one. Break out of the loop when we find the
first non-space character.
Also change 0 to '\0' for readability.
Change-Id: I915b82a6d1603740998a67c575d08005456ffbd8
1) Tree_lists was only initialized when booting the player.
In cases where a skin used custom UI viewports of
different sizes, when switching between screens, such as
between root menu, QuickScreen, and tree browser, this
caused list titles to appear with a significant delay,
unless a GUI_EVENT_ACTIONUPDATE was sent.
Tree_lists is now initialized when entering dirbrowse
or when restoring/reloading the list.
This eliminates multiple redundant UI refreshes when
entering the tree browser, due to gui_synclist_draw not
being called twice anymore and by being able to omit
GUI_EVENT_ACTIONUPDATE.
Separate calls to gui_synclist_init_display_settings
have become unnecessary since it is already called
by gui_synclist_init.
2) The synclist is also re-initialized when returning
from the QuickScreen in the Playlist Viewer or
regular menus, or when returning from Settings
menus
Change-Id: I2884249eda55f782e97abad9dc19b3d9d1267fc9