Move the iriver-specific functions for detecting flashed
Rockbox/OF images into system-iriver.c and remove the
HAVE_FLASHED_ROCKBOX define which is now redundant (all
targets using system-iriver.c enable it).
Copyright attribution on the new system-iriver.h header
is a best guess from Git history.
Change-Id: If1933f881a63fd517162ab9ca8f4a3007b997739
Only Coldfire targets have ever implemented this. Gate it
behind CPU_COLDFIRE so the stub functions won't be needed
in other targets.
Change-Id: I507952c40a04d813a40296142a6eba1df24b0a68
Most of the churn here occurs because 'filesize' is one of
the redefined filesystem functions, but some of the structs
used by the native FS code also include a 'filesize' member
variable which gets renamed by the macro in some but not all
source files.
It's easier to rename 'filesize()' to 'ffilesize()' rather
than try to clean up the macro mess or renaming the struct
members.
There is weirdness with root_realpath() which now breaks on
native builds because it was assumed to be unprefixed there.
dir_get_info() was unprefixed everywhere but this just seems
inconsistent; make it follow the FS_PREFIX() convention too.
Change-Id: Ic3700c6234ea45f32679c1a8429d70fdb8f4088a
backlight_on_button_hold / remote_backlight_on_button_hold
were never added to the Plugin API nor backlight_use_settings() helper
Change-Id: I75999af76f98244a870ab86564e591c8a900e66c
Add S5L8702 VPU-B initialization, reset, bitstream input, frame output,
and cache maintenance to the iPod 6G target. Advertise it with
HAVE_HW_H264 and append a capability-gated decoder interface to the
plugin API.
Keep MP4 parsing, AAC decode and mixer output, A/V synchronization,
playback controls, resume state, and presentation in the multi-file
h264_player plugin. The target layer exposes decoder operations only.
Accept non-fragmented MP4/M4V containing Constrained Baseline H.264
through level 3.0, up to 640x480 at 30 fps, with optional AAC-LC audio.
Validate codec configuration and all sample-table relationships before
activating the hardware.
Read MP4 tables in bulk, boost the CPU while preparing them, and report
staged loading progress so long movies do not appear to hang during
startup.
Register the viewer and document its format limits and controls. The
libm4a compatibility fixes needed by video-first containers remain in
the preceding standalone change.
Tested on an iPod Classic 6G through an isolated Rolo nightly runtime:
H.264/AAC playback and M4V startup succeeded. Normal and
isolated-runtime iPod 6G builds also complete, and git diff --check is
clean.
Change-Id: I1e96c65c7d0b4231a94f602f8052f1b26d6e4a80
FONT_UI scans from MAXFONTS-1 to 0 to maximize the chances of getting a loaded
font but this may result in global_status.font_id being ignored even
if set through setuifont
this should take care of all the plugin woes dues to this
by setting the lcd font to the ui font before loading the plugin
and also making FONT_UI map to this font when font_get(FONT_UI) is called
if the desired font is not loaded then fallback to the previous behavior
Change-Id: I101d6f91910c17b08fca2b988a0a99c9e6899bee
I think they mean corrupted not crashes as I couldn't repro that
splash_scroller stepped by individual chars and split multibyte
sequences leaving corrupted chars
now it uses the new font_measurestring() to get the max_w and chops
it at break chars instead
this required a bit of a logic change to the function but should be
as good with less complications
Change-Id: I692db8b4737f41aec08dbc122fb844028498326d
Follow-up to 9f20c45.
tagtree.c's retrieve_entries has significant stack usage
(>1.5k) and is called from tagtree_entries_iterate.
Further Reduce stack usage of tagtree_entries_iterate,
going from 784 B to 72 B, by using static memory allocation
for the the tagcache_search struct in the Properties plugin.
Change-Id: I75a170bea1c5392c18a891844a0ff31fbd2114eb
Stack overflow in splash_progress called from
tagtree_subentries_do_action with stack protector
enabled on mips
Change-Id: Ia71e0493e279af0531ae792d41442198555664f6
Eliminate the somewhat circuitous skin_defer_rendering
and skin_render_deferred functions introduced in commit
c145d19e85.
skin_render (and thus skin_update and sb_skin_update),
along with skinlist_draw, list_draw (and thus
gui_synclist_draw), and quickscreen_draw, will never
update the screen anymore. Instead, the skin is only
marked as dirty now.
GUI_EVENT_ACTIONUPDATE redraws the skin as necessary,
and updates the screen afterwards, if the skin is dirty.
This event is sent from get_action, just like before.
A new event, GUI_EVENT_ACTIONREDRAW allows you to redraw
the skin without causing an immediate update at the same
time.
Change-Id: Ib20644853ead901e32f639000f044d6935135bae
Based on commits ce33902 and 8990d52 (without PictureFlow)
from "Rockpod" fork by Nux Li (https://github.com/nuxcodes/rockpod),
with some adjustments.
Addresses flickering when:
- plugin is opened/closed
- activity changes
- theme is toggled
- QuickScreen is opened
In these cases, skin_render will not immediately update the display
anymore, but instead will wait until the UI viewport is ready to be
drawn as well, so we don't produce unnecessary visual glitches.
Change-Id: I8bed8f06221d3e767a32450f199e69d742bc61cd
Also adjust scrollbar margins and height so it matches
the look of normal lists, and hide scrollbars when set
to SCROLLBAR_OFF.
Change-Id: I27f6de7b16cf5ec72e12c7d6377a8772d84947ac
settings_load_config() only reads up to 128 characters
while openplugin entries could be upwards of 600
instead use the open_plugins plugin to restore entries
add import from .cfg file
add save to .cfg file
better dupe checking
Change-Id: Iec2506aad14a3eb89dcc558b0fbc1f014aad98b5
* pcm_play_data
* pcm_play_stop
* pcm_play_stop_int
* pcm_is_playing
* pcm_set_frequency
* pcm_get_frequency
* pcm_apply_settings
Now, the only user of these functions are the mixer and recording layers
that provide a higher-level API to plugins and the main [playback]
application.
Outside of the PCM core, pcm_apply_settings() was only used immediately
following a call to mixer_set_frequency(), so the latter function
now always calls the former.
Change-Id: I61c3144dc156b9de9b7963160b525c6d10c6ad4b
move target-specific pcm operations into builtin_pcm_sink.
in subsequent commits, another pcm_sink is added, and it becomes
possible to switch between them.
Change-Id: I8f8b9661e01d6e6472f34224ddc3760856778457
pcm_play_data -> mixer_channel_play_data
pcm_set_frequeny -> mixer_set_frequency
pcm_play_stop -> audio_stop at startup / mixer_channel_stop at shutdown
pcm_is_playing -> mixer_channel_status
All of these have been removed from the plugin API. Updated API docs to
clarify role of audio_stop() vs mixer_channel_stop()
Todo: get rid of pcm_play_[un]lock().
Change-Id: I8800c131b51f064ee923a4c6e42aa405d33851fc
fixes:
- traverse_dir was called recursively using two
MAX_PATH local buffers => possible stack overflow
- The import function inserted additional, incorrect,
entries when the whole line buffer was filled
- "Dirs not found" message overlapped number
of folders when generating folder list
- Final number of scanned folders wasn't displayed
- Wouldn't stop inserting when maximum number
of files in playlist was already reached
- Prevent buffer overflow when importing
- Don't write to fd after opening failed
- Use whole buffer with read_line, instead
of subtracting 1. Remove hard coded sizes
- CRs don't need to be removed in import function
(already handled by read_line)
features:
- Use insert context for *much* faster insertion
of large # of folders, and nicer progress display
- Use UI viewport
- Add progress indicator when saving or loading
- Display number of folders in edit list title
- Go back to plugin's main menu from edit list
- Only ask to save changes if list is dirty
- Warn before erasing modified playlist
- Flag successfully created playlist as modified
- Make folder scan wait for dircache
- Shorten menu item names
- Put "Play Shuffled" menu item first
- Remember selection when returning from submenus
- Go to WPS after ACTION_TREE_WPS
- Exit menu when pressing Back
- Perform an initial scan, if no data file exists
yet, when "Play Shuffled" or "Edit" is selected
Change-Id: I7df76f8fb8387888ce491d8b74b01b481e9997d3
Each time viewportmanager_theme_enable (or _undo) is called,
the SBS title is reset, even if the theme remains enabled.
Thus switching from one menu to another, if do_menu is called
again, briefly results in an empty title before the correct
one is displayed. Even unchanged titles will unnecessarily
flash for a moment. Other theme elements that are drawn using
conditions based on the title, may also appear glitchy.
This patch adds a way to make the status bar title persist by
copying it to a static buffer. Persistent titles are not reset
by toggle_theme (although scrolling will be stopped in
viewportmanager_theme_undo), so that the theme can immediately
display the appropriate title in do_menu, simplelist_show_list,
the yesno screen, or plugins that want to keep the theme enabled.
Change-Id: I1ec8f233b730321793eb7d3cad51496ee1b35440
According to wps code audio_pre_ff_rewind function should be called
before any rewinding. It stops playback and automatically resumes it
after audio_ff_rewind call
So, let's add audio_pre_ff_rewind to plugin's API
Lua scipts were tested:
```lua
-- has issue with rewinding
rb.audio("ff_rewind", 0)
```
```lua
-- no issue with rewinding
rb.audio("pre_ff_rewind")
rb.audio("ff_rewind", 0)
```
Change-Id: I2ad6b9c396760b2086bc0a28633a1c80c3512739
Running Disk Tidy while the dircache is loading is a lot
slower than waiting for it to finish building first.
Typical scenarios for this would be starting Disk Tidy
immediately after booting or after unplugging from USB.
Deleting files during a dircache build also seems to easily
result in memory corruption, as evidenced by visual glitches
appearing in the theme.
Change-Id: I9250d918d916b112ffe2504a9225a0b52bcc3622
Take advantage of skinned status bar title, instead of
displaying a custom header that reduces space for content.
A custom header will still be displayed if the SBS
doesn't come with its own title, such as on the default
theme, or if the status bar has been turned off in Text
Viewer's settings.
Change-Id: I14c8d9a61acf338d09d7f54947399e8692987a7b
Multiple plugins carry their own strstr() implementation because
the in-core version wasn't exported to the plugin API.
Change-Id: Ib57a9b63754c89fb3447ec1d3958963d23145105
These were lifted from the lua plugin.
sdl, doom, puzzles updated to use the exported version
todo: lua, maybe?
also: convert uses of atoi [back] to strtol
Change-Id: I5a1ebbe8d8c99349e594ab9bbbce474e7645b4e9
Also show current mixer frequency in title of VU meter,
and adjust the menu title from "VU Meter Menu" to just
"VU Meter"
Change-Id: I5bf8f55a3c9874618cac939fe32a611ac96f52ff
- Show stats when finished
- Keep stats on screen until Cancel or Menu
button is pressed
- Limiting progress updates to 10fps results
in a big speedup
Change-Id: Iebffaead6e1212306edaa42aad925458d13a5f82
* Rename LANG_RESET_ASK to LANG_ARE_YOU_SURE,
so that it matches the actual language string
(translations remain valid), and can be repurposed
for generic confirmation prompts, where the
first line says "Are you sure?", and the second
line reiterates the selected action
* Add "Reset Settings" as second line to the prompt
shown before resetting settings, instead of just
asking "Are you sure?"
* Make Shuffle prompt consistent between WPS and
Playlist Viewer, and ask whether user is sure they
want to Shuffle instead of warning them that the
current playlist will be erased, which was a bit
misleading
* Explicitly say "Cancelled" when user answers NO to
erasing the current playlist or to overwriting a file.
Improves consistency with other prompts that are
displayed for potentially destructive actions, e.g.
before items are deleted, renamed, saved, or reset.
* PictureFlow: Prompt before rebuilding/updating cache
Change-Id: Id8ae36db7187315eb1a374701307e6ab4dcdbd1d
Lets you launch the main_menu_config plugin
from Settings, so that it remains accessible,
even after all other menu items have been
hidden.
Includes minor changes to the main menu config
plugin, so that it better fits in with the rest
of the settings menus:
* Keep theme enabled
* Autosave
* Add "On" or "Off" suffix to each item, to prevent
confusion when Icon_Config is blank, as is the case
with certain iconsets
* Update current selection after swapping items
* Prefix spoken selection with row number for enhanced
clarity when swapping items
* Change title to LANG_MAIN_MENU
* ACTION_STD_OK to toggle an item's visibility
* ACTION_STD_CONTEXT to access options for reordering
menu items, or for reverting to the default menu
* Ask for confirmation before reverting
Change-Id: I74240b94243224c76e23ef8f3a0559bd8ba28df0
Most calls to splashf() use str(IDNUM), those can be safely
moved to ID2P(IDNUM) now. Those will follow.
This change effectively makes splash() a simple wrapper around
splashf() so just make it into a #define instead..
Change-Id: I820e74e34cb4be3f523b25ce3f5dcc341bdba3e4
ARMv7-M has hardware division, so it doesn't require __div0
or any support functions for 32-bit division.
Change-Id: I840683a1a77d737f378899ca4bcf858216b81014
when battery_bench is run
exports a file in the rockbox directory called 'battery_levels.default'
if the user wants their own levels they can rename the file battery_levels.cfg
and it will be loaded at boot
some minimal error checking is performed prior to using the values
added manual entry
Change-Id: Ia0126faced0c7229fcf8385a1bcb584b5a9dc378
rockpaint is the only plugin doing anything dit setting the dirfilter pointer
it appears to restore it but this is cheap insurance on weird crashes
that result..
Change-Id: I70c826d6ec4c9cb6e1539ab23f1de82ca3e67ad1
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