Commit graph

18511 commits

Author SHA1 Message Date
William Wilgus
ad64336e69 [Bugfix] Autoscan when radio off hangs player, record static
Clipzip, ClipPlus other devices may be similar
Autoscan from the main menu and the device hangs at scanning 88.1

try to record with no station set and it just records static

Change-Id: I59fe17dde80736e4fae8445c0aea7fcf5e476317
2026-06-20 11:43:02 -04:00
William Wilgus
81962808a2 use core_alloc for Radio Presets
saves around 1.2k off the top &
allocates a movable alloc when FM radio used

Change-Id: I0ea8c646f919fc8e62de2b02c1c089620e7ef020
2026-06-20 11:23:55 -04:00
William Wilgus
7a32c8b5e3 [Bugfix] lua splash_scroller line formatting
I accidentally added an extra character wittthe last patch by changing
< to <= in the process of testing this I realized spaces were sometimes
being included at the beginning of the line and also that sometime
sentences were being cut short even though they fit on the screen

Change-Id: Iee0ed64e18defad2acb3c107d334ea2a49bd5b6f
2026-06-18 22:21:16 -04:00
William Wilgus
ca2edad012 [Bugfix] FS#13926 -lua Crash when displaying error splash
fix lua strpbrk function skipping the first accept chr

lua splash_scroller fix NULL pointer in brk due to lastbreak
not being reset on a new line

Change-Id: Ica0c9ee5f9194f5be54ab90ad16309adead1c207
2026-06-17 13:55:43 -04:00
William Wilgus
d737cbb931 Sansa As3525 OS stacks debug menu change scroll buttons
the other items that scroll use the menu button and reset on STD_OK

OS stacks use STD_OK to scroll and any other button to reset

Change-Id: I1fa1caa322fe761c6f92d2d08cc418e78843863b
2026-06-17 10:26:22 -04:00
Le Khanh Binh
d00a53a1f0 iap: Fix dead remote at boot & ghost clicks on held buttons
Fix FS#13832
If the remote is already plugged in when Rockbox boots, it stays dead
until you replug it. These remotes only send their identify packet
once at power-up, so we never see it and then throw away all button
events because lingo 0x02 was never negotiated. The OF doesn't care,
so accept ContextButtonStatus from unidentified devices too. Stray
bytes received before iap_setup() also made iap_getc() return false,
which the serial driver takes as "sync found" and locks autobaud onto
the wrong bitrate.

The ghost clicks come from the repeatbtn handshake. A held button
resends its down event every 30-100ms and each one re-armed
iap_repeatbtn, which stalls handling of the following packet. So
during a long press packets pile up, the event queue overflows, and
the leftovers replay as keypresses after you let go. Skipping fires
on button release which is why next/prev showed it the worst. Now
repeatbtn is only re-armed when the button state actually changes,
and iap_handlepkt() drains whatever complete packets are in the RX
buffer rather than relying on one queued event per packet.

While at it, fix two more things found along the way: the button
state is now written in one go (the temporary BUTTON_NONE could be
picked up by the button tick mid-update), and iap_rxlen is
decremented when a frame is received so the overflow check actually
does something.

Tested on ipodmini2g with an A1018 remote.

Change-Id: Ie18512e47d642fe6957fc010eaf79b6d2af4c070
2026-06-16 21:36:02 +07:00
William Wilgus
58ce77fbe2 [BugFix] tagtree voiced Letter menus with talkmenu off
Change-Id: I671f795061a63bcf5db3c94728e98dd7506329a7
2026-06-14 16:50:54 -04:00
William Wilgus
4d773a3329 onplay wps context menu plugin item rework namebuf
only load the namebuf once unless user changes the plugin
also displays the plugin name when user selects the whole context menu

Change-Id: I32b53729a3dcc2bf2c42393876407df7f3d38d8c
2026-06-11 09:52:09 -04:00
William Wilgus
0a1858b9d1 [BugFix] prevent infinite loop to return to wps from plugins
if there is nothing to resume then it will return to the plugin endlessly
hanging the device

Change-Id: I7d6a0c7ec5a9e049cf62f88542bedaa1081556ac
2026-06-10 01:26:51 -04:00
William Wilgus
a81d3fa10e [Bugfix] open_plugins.rock add 'add' item regardless & voice improvements
also fixes a bug where synclist viewport could be empty if the list isn't
initialized

voices path and parameters now

adds the item [Add] as the last item in the list

Change-Id: I1aad62baf3c19a67d04fa1fb3db8a7573e0a467f
2026-06-09 00:39:31 -04:00
William Wilgus
e5c7f0c41c open_plugins.rock add title to main menu, add scroll stop on close
Have a report of a hanging scrolling item, ensure the lists are stopped
on exit with gui_synclist_scroll_stop()

Change-Id: If670806f710118c79377bf8c5de6c1a5168e37fc
2026-06-08 12:03:05 -04:00
William Wilgus
9b0516e4e1 [BugFix] openplugins.rock 0 is a valid file descriptor
Change-Id: Id7d9c2c4b9d13433c8aa2260b20f5d74e4b3add8
2026-06-07 11:19:08 -04:00
Christian Soffke
1add6b0dd5 shortcuts: eliminate unnecessary nesting
Reduces GNU Complexity scores for:

* shortcut_menu_speak_item: 66 -> 10
* do_shortcut_menu: 39 -> 20
* readline_cb: 29 -> 16

Change-Id: Ic648a7eb1e51d4a116bc8af61f1ed1c617cee024
2026-06-06 19:18:17 -04:00
Christian Soffke
86decaab9e root_menu: Start Screen: don't try to resume finished playlist
Go to root menu when Start Screen has been set to "Resume Playback"
but playlist is finished

https://forums.rockbox.org/index.php?topic=55770

Change-Id: I6939fa313dd5fd6485628e22a2d860763492d5cf
2026-06-06 11:34:18 -04:00
Christian Soffke
292e8a17a2 keymap: erosq: fix keylock button handling
Only react to Power button release if previous
button code was Power button press, so that
screen doesn't lock when device may have just
been turned on

Change-Id: I1ba228103efedeeceaaa00c49b1b1da66b63bb75
2026-06-06 17:23:58 +02:00
Christian Soffke
f123dbc04a misc: shutdown: fix backdrop glitches
Clearing the display makes the backdrop come to the foreground.
which can look odd or glitchy, particularly for themes that do
custom drawing on the backdrop buffer (2c71aa9). It also causes
issues if the shutdown has to be canceled.

Instead, enable theme, then clear the UI vp.

Change-Id: Ia96d1e766a9b86ec133522f7cd259e8b88f64216
2026-06-05 20:20:06 -04:00
William Wilgus
2b96380641 [Feature] FS#13884 #2 allow merging imported native keymaps
allows you to import a file and merge native keymaps

pops a yes no prompt to erase existing

duplicates will be overwritten

Change-Id: I167c6fac65775754b2a9874185d14f65638db9d7
2026-06-05 12:08:53 -04:00
William Wilgus
7517674513 FS#13920 text_editor.c plugin do not terminate last line with \n
you can still add a \n by inserting a blank line

Change-Id: Ic3e69fce83ccc9c050857a03877545a7452ce8a2
2026-06-05 02:17:38 -04:00
Christian Soffke
74905f4796 skin_engine: settings_apply_skins: remove get_skin_filename
Has no effect anymore since commit d66592b

Change-Id: Ibefc834378518c7e73e9e9b2489b6c072499bbe8
2026-06-05 00:04:17 +02:00
Christian Soffke
0836ebbd45 shortcuts: fix 'File' shortcuts may fail when dir filter set
Only apply dir filter to 'Browse' shortcuts, so that,
when trying to run a file from Shortcuts that is hidden
due to current dir filter settings, you don't get a 'Failed
reading Unknown' message (LANG_READ_FAILED/LANG_UNKNOWN)
because the tree entry can't be found in ft_enter.

Change-Id: I4eaad2ec415c9bac352a409922848e4407dac993
2026-06-04 21:32:54 +02:00
William Wilgus
ad05e23b72 [Feature] FS#13884 allow merging imported text keymaps
allows you to import a file and merge text keymaps

pops a yes no prompt to erase existing

duplicates will be overwritten

Change-Id: I0f4425e765f0a2ff6b73b830bcaea1b3f31e83cb
2026-06-04 12:10:03 -04:00
William Wilgus
e80e1448f1 [bugfix] Remember position in plugin browser menu
make the struct static so we can keep using the same
browse context between invocations

Change-Id: Ia154a78935755e1decb6abe50291d49e4404fb95
2026-06-04 02:33:44 -04:00
Solomon Peachy
3152beee32 chore: Don't embed $Revision$ tags in auto-generated files
I was going to convert them to a git hash instead, but that would
break builds from tarballs.

Change-Id: I76213b8b65df2c6cfb73cba299a4975a22725f36
2026-06-03 08:31:05 -04:00
Christian Soffke
a39e4f2a06 skin_engine: get rid of skin_unload_all
The skin is not unloaded using skin_unload_all in
settings_apply_skins anymore since commit 0ca4b38.

usb_screen was last remaining user until commit a969e1f.

Change-Id: I65a41ed220165587a04e699a7f210c575c00a4eb
2026-06-02 19:49:13 +02:00
Vencislav Atanasov
4469b95ef2 Update the Bulgarian translation
Change-Id: I285c5d71054b8c245ad40bd7c7a6d76e9b45fd01
2026-06-02 01:07:00 +03:00
Solomon Peachy
d54b9e6f8d chore: Get rid of *all* vestigal CVS '$Id:$' tags
Change-Id: I35c13a9768c582e4851aa252dd3ea5c89f760c8c
2026-06-01 16:01:18 -04:00
William Wilgus
3b2555bd4d onplay wps context menus small cleanup
no functional changes just cleaning up some code / logic

Change-Id: Ic03918a70997cfb170a29175361e2df9a9d242d1
2026-06-01 10:47:07 -04:00
Roman Artiukhin
c052d11673 skin: touchscreen: fix rewind in long files
Fix a possible overflow in the elapsed time calculation.

Change-Id: I211777d8144f76889003239b9a49e4fc56184c8f
2026-06-01 04:26:06 -04:00
William Wilgus
a7754eee71 [Bugfix] FS#13912 - splash_scroller with cyrillic crashes
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
2026-05-31 19:05:51 -04:00
Solomon Peachy
1c84362f3e FS#13915 - Updated Italian Translation (Alessio Lenzi)
Change-Id: Icc52476aa680361ee912468d9e47d67ac8324bad
2026-05-31 13:03:49 -04:00
Christian Soffke
16900c7fee root_menu: fix skin glitch when rebuilding tagcache
Only clear the UI vp instead of the whole display

Change-Id: Iab39094184a6749df743af268a4d9923cb18a73a
2026-05-31 11:50:11 -04:00
Roman Artiukhin
892fbe8d8f action: touchscreen: fix stuck repeated state of last action
This fixes the repeat_mode being stuck on Repeat Shuffle on the Hiby R1 WPS, and quick settings values being stuck at the last values for touch actions.

Regression from 9e254aca. The repeated state is used by the quick screen to detect repeated actions (see b918ec5) so I also removed "historical baggage" note.

Change-Id: Ic2a97058bbd17d232954ffe37f31a480ee11fe54
2026-05-31 13:20:39 +03:00
Christian Soffke
3507f32d01 plugins: properties: further reduce stack pressure
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
2026-05-29 20:40:36 +02:00
Christian Soffke
35270d08e9 apps: bookmark: stop scrolling when leaving select screen
Missing from commit 6a25257, which only stopped scrolling
when you entered the context menu.

Change-Id: Id8a586103ea71a2b965a24f8797253eb248f1078
2026-05-28 20:13:10 -04:00
Christian Soffke
160905b1b8 gui: list: update skin in gui_synclist_set_title
Moving the skin update from gui_synclist_set_title to
gui_synclist_draw (c41beeb) had the inadvertent side
effect that, if gui_synclist_select_item was called in
between, it may have missed a configured skinlist that
only got enabled by the skin update. Which could lead
to a selection appearing off screen.

This was mainly an issue if you had popped an activity,
which resets the skinlist cfg to NULL, but didn't perform
a skin update before the call to gui_synclist_select_item.

Now that GUI_EVENT_ACTIONREDRAW can be used instead of
GUI_EVENT_ACTIONUPDATE to prevent the display from being
updated, we may as well update the skin immediately in
gui_synclist_set_title again.

Change-Id: Iaee98d670ffb8d7b6590bd2ba11827fef5fba5a8
2026-05-28 20:12:35 -04:00
Christian Soffke
9f20c45a5e plugins: properties: fix stack overflow in db
Stack overflow in splash_progress called from
tagtree_subentries_do_action with stack protector
enabled on mips

Change-Id: Ia71e0493e279af0531ae792d41442198555664f6
2026-05-28 19:58:21 -04:00
Christian Soffke
f0d3d76b26 gui: list: clear skinlist cfg when selected_size isn't 1
This disables custom scroll bars when initializing lists
that are currently always un-skinned, in scenarios where
there is neither a new activity to be pushed, nor is the
theme toggled.

Change-Id: I1bb05fc9be956c71e1adb70e764094082d9bb904
2026-05-29 01:39:42 +02:00
mojyack
abaac894f9 plugins: lastfm_scrobbler: fix build error with LOGF
Change-Id: Iefb4b7e4fefb366987627bfd32c27b3252ca34c8
2026-05-28 17:28:07 +09:00
mojyack
e62ac0d2c6 ovl_offset: use elf symbols instead of refmap
add a plugin_ram_end symbol to plugin.lds and rewrite ovl_offset.pl
to read plugin_ram_end and plugin_load_end_addr from the elf via nm.
this removes all dependence on the linker map file format, which
differs between gnu ld and lld.

Change-Id: I66e623d9a2b44eb84ae7035155c84d8afe46df23
2026-05-27 17:55:33 -04:00
Christian Soffke
018994e8c7 gui: skinned lists: fix off-screen selection
The skinlist cfg may not have been restored in time
after leaving the onplay tree menu, because the skin
isn't updated before gui_synclist_select_item is called.

This can result in the wrong number of visible lines
being calculated for the list, and a selection that
appears off-screen.

Regression introduced in commit dfd9c10, or later.
Due to the recent drawing changes, reverting the
changes to onplay.c doesn't re-introduce any visual
glitches.

Change-Id: I853bdfe6b6ba39e2eb281534ca302a0a828253b9
2026-05-27 22:03:46 +02:00
Christian Soffke
358c6056ef gui: skinned list: always set cfg to NULL when toggling theme
Takes care of disabling scroll bars when the current activity
doesn't change, but the theme is toggled. Applies to confirmation
prompts, for example.

Since we're updating the skin immediately afterwards, the cfg
will be reset as needed.

Change-Id: I8a62b6b4ad0abf5176ab6b3e39281021108cb59f
2026-05-27 19:10:23 +02:00
Christian Soffke
0c464c3d49 gui: list-skinned: fix scrollbar not disappearing
In some scenarios, when leaving a skinned
list, the scroll bar remained visible.

Change-Id: I0aa08cc95b4cf315834f83f57c09ed3e0f43de70
2026-05-27 12:42:52 +02:00
Solomon Peachy
72af66bc8b FS#13910 - Updated German Translation (Karl Huber)
Change-Id: I0f6a6b7f758b929ed9c7e3127c548a036c381b1a
2026-05-26 19:10:51 -04:00
Solomon Peachy
9936d93fea Translation updates:
* Korean (Hoseok Seo)
 * Polish (Adam Rak)
 * Slovak (Matej Golian)
 * US English (Myself)

Change-Id: I1fe9b5bde585691d40288d933d286448c36421e4
2026-05-26 10:17:20 -04:00
Christian Soffke
2a29dedeb6 gui: skin_display: draw album art first
Some themes, such as Themify, FreshOS, iPod reFresh, Jive,
iPodOS, iPone, iClassic, AbsoluteBlack320, and possibly
others, draw a mask over the album art on the foreground
layer, in order to add rounded corners or to apply a fake
camera perspective (instead of taking advantage of the
backdrop layer).

This results in rendering glitches that can be fixed by
drawing the album art first.

Change-Id: Ie373c51304ab0d0a09b8663a8adff343a32ae5bb
2026-05-26 10:10:51 -04:00
William Wilgus
239ba599fd [Bugfix] FS#13908 hotkeys not saved when language is changed
Lang IDs get localized, if using them in a setting they should be
converted to english

adds lang_id_to_english() which walks the core builtins to return the lang id in english

Change-Id: Iced0d70be1318e512a8f3756e2bef1102dc511d8
2026-05-26 01:28:19 -04:00
William Wilgus
e471fe4115 [FixRed] Tree Hotkey on devices without HAVE_HOTKEY
Change-Id: I36f2fd8fc5edb2ac019a176cb9d3a3d014f1970d
2026-05-25 15:04:22 -04:00
William Wilgus
21e9d3f449 Hotkey Tree share code with WPS Context / Hotkey Wps
Change-Id: I0d81601bdb8279e845a874486ac4c1516b9d7dfc
2026-05-25 14:50:33 -04:00
Solomon Peachy
c2344070ac xworld: Fix set-but-unused variable warning with GCC16
Change-Id: I5e20a32d84ebc7ca56278988b8add9ee644138ba
2026-05-25 13:00:30 -04:00
William Wilgus
bf0fa29a30 WPS Context Menu configurable entry
Allow setting context menu items

reuses WPS hotkey items

Runs the item
displays the item

Open plugin shows the item name

Pitch shows the pitch speed amount

add 'Show In Files' hotkey item

devices without a hotkey get an extra item

added Manual entries

Change-Id: I427e70e1cad15364ac5d2a7114032e97cc9eee1a
2026-05-25 11:07:59 -04:00