Commit graph

39278 commits

Author SHA1 Message Date
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
addcc159c2 tools: Update mp3info perl module to final upstream version
1.20 -> 1.26

  https://github.com/dsully/perl-mp3-info/commits/master/Info.pm

Change-Id: I0d58f56265a463784f45673764b9fdc054887c2a
2026-06-01 16:08:00 -04: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
Solomon Peachy
d72a93836c nwztools: Update database generator script to work with python3
Change-Id: I662de90b57a3836755b88ff51537eb1597f226f4
2026-05-29 23:36:45 -04: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
Solomon Peachy
8af98332ab convttf: Add sanity checking to specified defaultchar
It now matches the logic in convbdf

Change-Id: Ic17fdd4dbed41fad4d3353b9dd314cd24a8ded58
2026-05-29 07:33:36 -04:00
Solomon Peachy
f17effbe8f gitignore: Add the utils/imxtools/sbtools binaries
Change-Id: Ie767ddb2a54898698f6cbb1d2ab9339ea03f89ab
2026-05-29 07:22:55 -04:00
Solomon Peachy
d1f1d1da5e button: Fix a set-but-unused variable without HAVE_SW_POWEROFF
So wrap the definition and setting of repeat_count with the
same #ifdef

Change-Id: I8c06ea68eca7e5db960e4fa08a866761e856293e
2026-05-28 22:35:51 -04:00
Solomon Peachy
8e5efb6850 convbdf: Make explicit when the "default" glyph is used
When a font doesn't have a glpyh for a given codepoint, the convertor
points it at the "default glyph".   The plan is to replace this pointer
with a canary value so that rockbox genuinely knows this glpyh
does not exist, allowing a fallback path to be implemented.

(The plan is for the fallback path to attempt to compose a glpyh from
 its decomposed codepoints, but this would make it be possible to
 implement a true fallback/subsitute font mechanism)

Change-Id: If6fea29f5393a6d4b9d5747c911a36fdc8dda5ae
2026-05-28 20:56:23 -04:00
Solomon Peachy
e1534d8065 convttf: Allow default glyph to be specified
Formerly fixed at the first glpyh in the converted font; now it can be
explicitly set.  This mirrors the functionality available from using the
DEFAULT_CHAR property of BDF fonts

Change-Id: Ibd754faff3fd4d393c4781e8faa685612e3301f0
2026-05-28 20:56:23 -04: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
fa67d29909 rbcodec: flac: cleanup around LOGF
Change-Id: I0c3798b8f09e1365712c6173bc5d587f9ea728a8
2026-05-28 17:28:07 +09:00
mojyack
543c8de861 rbcodec: enable logf only when LOGF_ENABLE is defined
currently logf() in codec are printed unconditionally when
ROCKBOX_HAS_LOGF, which is confusing.
Gate them behind LOGF_ENABLE to align with the main binary.

Change-Id: I4eb44604000acded55d0af8869145c4f3d77efcb
2026-05-28 17:28:07 +09: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
Solomon Peachy
6e64cb8043 gigabeat-s: fix red in 216b576c9
Change-Id: I388ac7bbc60d06beede5461f99e0612086d1bfc3
2026-05-27 09:00:39 -04:00
mojyack
6e31703289 fix incompatible pointer errors with clang
clang uses "unsigned int" for "uint32_t", which does not match gcc's
"unsigned long".
fix errors caused by this.

Change-Id: I05aaf23934167a56a6e400f49fcaf8b70bfaca13
2026-05-27 08:43:49 -04: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
mojyack
e75e9d22fa bootloader: rk27xx: fix duplicate symbol error in enter_rkusb
since it's a static function, it may be inlined.
use local labels to fix duplicate-symbol errors.

Change-Id: Icba6e6876077e874ab5cfcdc3c774acb663356a1
2026-05-26 11:42:53 -04:00
mojyack
e6b62b0dbb unwarminder: safe_read.S: hide data_abort_handler for non-classic arms
"subs pc, lr, #4" is invalid on cortex-m

Change-Id: I3809691ee3a9e3864c592316216178d32ab278fc
2026-05-26 11:42:42 -04:00
mojyack
d75a5d5769 target: mips: mark .startup.spl section as "ax"
this fixes "has non-ABS relocation R_MIPS_26 against symbol 'spl_main'"
error when linked with lld.

Change-Id: I6b584d8fdcae3f509f322b8557249bc2870904a3
2026-05-26 11:42:25 -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
Skye
0c8365a286 x1000: add basic UART implementation
Change-Id: Ic5a6d66b7280b924e6a106f07849a057c72d5c4c
2026-05-26 07:14:22 -04:00
mojyack
a019f19b1c rbcodec: libgme: fix byte-order detection for mips with clang
clang defines both of __LITTLE_ENDIAN__ and __mips__, causing
confusion in the byte order detection.

Change-Id: If95255974e9e3e5d0554410bbab65bc2af1bb1c7
2026-05-26 06:54:48 -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
ff3155be9a lcd: Fix possible unset-before-use variable in 4bit alpha blending
Change-Id: I39e779e9452239b00731f31f55225cd979afe911
2026-05-25 13:05:49 -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
Solomon Peachy
9a142ee02d checkwps: Fix warning uncovered with GCC16
/home/rbbuild/rockbox/tools/checkwps/checkwps.c: In function 'main':
/home/rbbuild/rockbox/tools/checkwps/checkwps.c:329:21: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
329 | char *ext = strrchr(name, '.');
| ^~~~~~~

Change-Id: I0c62600f269456cb81d0e3eaf77839c9103f2e41
2026-05-25 09:10:08 -04:00
mojyack
44e8d8226a configure: switch from -std=gnu99 to -std=gnu11
which is required for u"" unicode string literals used in the USB stack.
gcc allows this even in gnu99, but clang does not.

Change-Id: I1700fe503f20f31ba4704f8bef1ccca45f822620
2026-05-25 08:47:51 -04:00
mojyack
2291aa24f2 usb: refactor control request handling
this commit is a combination of the following changes, which
significantly refactors usb core and class drivers.

1. unify usb buffers of each class driver to reduce iram usage
currently, many class drivers allocate their own buffer to receive
control out data, which is a waste of iram.
share one common buffer for that usage to address the issue.

2. simplify control request handling by implicitly receiving write
   request data packets
change 1 above fixed the data destination. therefore, having the core
receive the data allows us to reduce the class driver's work and
simplifies the api.

3. enhance usb core's control request handling and unify the legacy
   driver api
in order to implement change 2, both the legacy and new driver apis
should be supported. so that, using the designware driver as a
reference, the new driver api functionality is move into usb core.
this simplifies the usb device drivers by requiring them to implement
only the functionalities equivalent to the legacy api.

tested with ipodvideo(arc) and erosqnative(designware)

Change-Id: I3627daa90278751f599e2108ec150ec3f8f6c524
2026-05-25 12:42:36 +01:00
mojyack
64b1f09e06 usb: designware: cleanup irq handler
Change-Id: Ic1926a8277d32721e3c736472dfc41a57ba0d433
2026-05-25 07:38:37 -04:00
Christian Soffke
edecad823e gui: list-skinned: fix scrollbar lag
The skin engine is responsible for drawing custom
scroll bars, but isn't kept in sync with list redraws.

Change-Id: Ieb457a4eb8442d4521c67a46a94c4d2132814c64
2026-05-25 07:33:57 -04:00
Christian Soffke
c0a8303a9c gui: simplify screen updates
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
2026-05-25 07:33:53 -04:00