Commit graph

39130 commits

Author SHA1 Message Date
Solomon Peachy
89dd08a3b4 configure: Explicitly disallow erosqnative_v3/v4 for "normal" builds
They are only intended for bootloaders.

Change-Id: I4da3e7acd55b803e016bc9c42526860dfdc6fa9a
2026-05-02 07:47:36 -04:00
Solomon Peachy
f886bfc572 misc: Address issues uncovered with GCC 16 + binutils 2.46 (1/N)
* Funky macro-based definitions for memchr and strstr
   which require an #undef before we use our own in codecs & plugins
 * Return value of of strstr is const

Still have several more warnings and link failure with some plugins
but this is a good start.

Change-Id: Ife1f2d3e6f0e0629e3125a9058abc39c6102f452
2026-05-01 22:50:14 -04:00
Solomon Peachy
8e8206f6d5 FS#13886 - Updated Serbian translation (Ivan Pešić)
Change-Id: I10321a41db686ebbfdadf82c84d3797551fe7319
2026-05-01 11:41:39 -04:00
William Wilgus
52edc2e069 [Feature] allow displaying the WPS/tree hotkey menu with hotkey press
add 'Context Menu' item to WPS and Tree hotkeys

this allows a user to display a menu of hotkey actions to execute
when they press the hotkey

items are voiced

added 'View Album Art'

Change-Id: I2199c4de536f347016e7a8d7f3c063da0b56a9a0
2026-05-01 11:07:49 -04:00
Solomon Peachy
4ea2f57aaa lang: Update URL for translation site
Change-Id: I0e054a2bbae994e2eadd81abf096d4ac463d4bb5
2026-05-01 10:18:25 -04:00
Christian Soffke
dbcee0deae gui: defer deadspace viewport update
Change-Id: Idac4a2bf21ced25cbf4349dc32ef62b3a456f999
2026-04-29 15:44:53 -04:00
Christian Soffke
c41beebcda gui: delay updating SBS when setting list title
We currently force a skin refresh when setting the
list title. This causes very noticeable flickering
of the list, if the SBS draws over the UI viewport,
when there is no displayable list content yet
(For an example, check out the Adwaitapod theme).

Instead, only mark the title as dirty. Later, when
drawing the list, register for a UI update callback
and ask the skin engine to render, so that we can
draw the list at the same time.

Note: Flickering related to display updates when
switching activities or when toggling the theme is
unrelated to this, and will still need to be addressed
in separate commits.

Change-Id: Icce899905aa311deccb0cc498aacce2866aaae8a
2026-04-29 15:44:30 -04:00
Christian Soffke
7ab1a81806 simple_viewer: use UI viewport and SBS title
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
2026-04-29 14:19:48 -04:00
William Wilgus
2d419b4b93 [Feature] FS#13850 - Add SELECT button support in calculator on FiiO M3K
baremetal port add select as a second way to enter

Change-Id: I0e3ab76fee8e6accd4425def3da48fb12a6142e8
2026-04-29 11:29:10 -04:00
William Wilgus
121c65b32a [Bugfix] FS#13857 - Keylock with USB bug (Fiio M3K)
1. Lock buttons
2. Lock indicator turns on
3. Plug USB
4. Lock indicator still turned on
5. Unplug USB
6. Lock indicator turns off but buttons still locked and if you
press lock button you see "Buttons locked" splash

pretty sure this is an issue with the touchpad on this device
probably applies to other touchscreen targets too

Change-Id: Ia0afee7d737f3a5a2755f53d176bd53dd57d87c5
2026-04-29 10:30:54 -04:00
William Wilgus
1068433d5b [Bugfix] FS#13878 FS#13862 lua alpha bmp overflow and image flip example
FS#13878 - 292x216 images cause panic
 alpha channel causes overflow

FS#13862 - In rlimg example "flip image" cause error
 missing local variable

save random and rainbow images

fix ball bounce direction

Change-Id: I717eb029f30bf63d2eef0b7997eb04036ffeda15
2026-04-29 02:17:46 -04:00
William Wilgus
6928581bf9 [bugfix] open_plugin_import fails to import full path WIP
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
2026-04-26 12:56:13 -04:00
Christian Soffke
6cf705886d skin: custom scrollbar: fix OBOE
Change-Id: I0eb7463c39970c78321d53a51a61f463858dac4e
2026-04-26 11:20:06 -04:00
Christian Soffke
5bbf1c8e5b tree: fix gui_synclist_scroll_stop called with uninitialized list
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
2026-04-26 11:19:47 -04:00
Solomon Peachy
792a230c00 FS#13877 - Use FONT_UI in the Equalizer and scale sliders to match font size
The graphical EQ was configured to use SYSFONT, which is limited to
ASCII despite the EQ being translateable.  Change this to use
the current UI font instead.

As the UI font can vary in size quite drastically, alter the EQ slider
from a fixed 6px height (intended for use with an 8px SYSFONT) to 3/4 of
the height of the selected font.

Change-Id: I05e7e77be37e9b8cf633b31c12bc4ef02cbaa90a
2026-04-26 08:10:41 -04:00
Solomon Peachy
83214cf18c FS#13883 - Latvian translation update (Renalds Belaks)
Change-Id: Iaa60196c9316bb90eb228b3812561dd5f81b1034
2026-04-26 07:33:46 -04:00
Aidan MacDonald
31d8118581 plugins: sdl: fix LoadWAVStream failing to load WAV files
Reading the WAV length seems to have been accidentally
commented out in commit e28d1fe916. The WAV length is
not used here but disabling the read broke WAV header
parsing completely.

Change-Id: Ia6d0b1a168b2b029bd1cbec9bdc482caf6fa0487
2026-04-25 15:54:34 +01:00
Aidan MacDonald
80e3c0b065 mips: require 8-byte stack alignment
The o32 ABI requires at least 8-byte alignment. This fixes
the float formatting weirdness seen in quake (FS#13821).

Change-Id: I4b587946884d7b35cef420e607c7e127664849e2
2026-04-25 12:36:46 +01:00
Christian Soffke
2690418551 plugins: imageviewer: use theme in all submenus
Affects submenus "Toggle Slideshow Mode"
and "Slideshow Time" that were left un-themed.

Also prevents theme from being re-toggled
when entering "Display Options" submenu.

Change-Id: I3995d5eb12bbc8fb868c179db8043576eb675dbc
2026-04-24 15:25:41 -04:00
mojyack
6dc731dff2 include pcm.h in pcm_mixer.h for pcm_peaks
Change-Id: I074fff95b5147a343d23e22e876b33884a173c97
2026-04-24 20:07:29 +09:00
Aidan MacDonald
d02ad9b749 pcm: improve workaround for false -Warray-bounds in pcm_switch_sink
Change-Id: I81ff414ed07bbc61367250c25dc99c11e79d21d2
2026-04-23 20:43:07 -04:00
Christian Soffke
7960dbb9a7 plugins: Fix muted mixer channel (FS#13809)
Fixes regression where you may not have heard
any audio from some of the plugins modified by
commit 017dd72, due to the playback channel not
being unmuted.

Change-Id: Iaa184161c79d353dff6ef9bf3e0b39778c8b1bcd
2026-04-24 01:01:14 +02:00
Christian Soffke
d1abd788d0 pcm_mixer: fix missing NULL check for play_cbs
Fixes Metronome plugin crashing
(regression introduced in cb04b81)

Does *not* fix missing Metronome sound
(regression introduced in 017dd72)

Change-Id: I1da9aa2c937b267a3d5b122c431eaa9f7e748440
2026-04-23 15:13:17 +02:00
Aidan MacDonald
f9a5d6fe86 quake: fix crash from strange printf behavior (FS#13821)
This was a latent bug exposed by commit a3f2b64a46
("Enable float formatting in printf"). The version
number is passed as 1.09f, but somehow ends up printing
a string that is so huge it overruns the destination
buffer and corrupts the return address on the stack.

Using snprintf prevents the buffer overrun and gets
quake working again, though this doesn't address the
underlying bug with printf.

Change-Id: I37e4426bc6ebca42d83b5a3b659da497b652d1ae
2026-04-22 22:49:36 +01:00
Aidan MacDonald
e661c35b29 dircache: increase stack size to avoid stack overflows
On FS#13821, a test build with -fstack-protector-all
(which adds 4 bytes of stack to each function, roughly)
overflowed the dircache stack on the Hifiwalker H2.
In my own testing, the dircache thread hit 94% stack
use on the Fiio M3K using the same settings.

That seems a bit too close to the limit, especially
since the dircache uses recursion and might consume
more stack space for deeply nested directories.

Adding 768 bytes should provide enough of a safety
margin. This increases the stack size from 1.25k to
2k on most targets, including all X1000 targets.

Change-Id: I900c19da9fb33f539d02b00830aedeb15c7449e2
2026-04-22 22:07:28 +01:00
Aidan MacDonald
d815053360 Add support for -fstack-protector in native builds
-fstack-protector only needs a small amount of runtime
support to work on native builds. It increases code size
by ~1.5% on ARM/MIPS; -fstack-protector-strong adds 3-4%.
This is disabled by default and must be enabled by passing
'--with-stack-protector' to configure.

Change-Id: If952e711d3673c9b469895f08c7bff70b3d95df6
2026-04-21 21:16:28 -04:00
Aidan MacDonald
9ac6edf750 Add panicf to plugin and codec API
Change-Id: I0e11ecaf8e18233f682f572f479cfdd141c99bd5
2026-04-21 19:04:25 -04:00
Solomon Peachy
4e62c9f8cb FS#13879 - German Translation update (Karl Huber)
Change-Id: Icee3d2778b4a0afaf567776e43a996a8e99d2cce
2026-04-21 12:55:36 -04:00
Christian Soffke
088b3345fb pitchscreen: Fix unbalanced pcmbuf_set_low_latency when connecting USB
Change-Id: I73652ef27c24485faefe16c678406d78b0d6e0fd
2026-04-19 17:57:41 -04:00
Christian Soffke
9000614224 pitchscreen: Fix dropouts when button held down
Change-Id: I0f23ad6463f7938e832b0c5da2c121c5a5e5faa8
2026-04-19 17:57:34 -04:00
Vencislav Atanasov
1adadc943d Change which macro is used to check for Windows targets
This fixes a false-positive on macOS that was caused by the macro "#define TARGET_OS_WIN32 0"

Change-Id: I1fcfb19b5aae4f63f00b9500094d619c4f7eea4b
2026-04-18 13:43:49 -04:00
Solomon Peachy
9dce0c3258 Work around a false positive compiler warning in pcm_switch_sink()
CC firmware/pcm.c
firmware/pcm.c: In function ‘pcm_switch_sink’:
firmware/pcm.c:311:38: warning: array subscript 1 is above array bounds of ‘struct pcm_sink *[1]’ [-Warray-bounds]
  311 |     struct pcm_sink* old_sink = sinks[cur_sink];
      |                                 ~~~~~^~~~~~~~~~
firmware/pcm.c:79:25: note: while referencing ‘sinks’
   79 | static struct pcm_sink* sinks[PCM_SINK_NUM] = {
      |

PCM_SINK_NUM is 1, and cur_sink is initialized to 0.  It can never be set
above 0.  cur_sink can never be >= PCM_SINK_NUM, ie 0, but for some reason
the compiler thinks otherwise.... sometimes.

This only shows up on native ARM builds with GCC9.5.0

Change-Id: I1aa731a4ee21c46a264c8b70833e3b43e777e8a7
2026-04-17 21:56:38 -04:00
Solomon Peachy
39abe4f698 Translation updates:
* Simplified Chinese (Wang Ji)
 * Italian (Alessio Lenzi)

Change-Id: I21dcbfe07b128d080a10e52d2d4ebedd592e6868
2026-04-17 20:56:29 -04:00
mojyack
9ffc8a00ce pcm_mixer: implement mixer_switch_sink
Change-Id: I1549470774f96a6f470817cbc5fe4611812de6fa
2026-04-17 20:54:10 -04:00
mojyack
be4b0591ee pcm: implement pcm_switch_sink
Change-Id: Iace01c2e97950cc794f3cf755dc358da6f3daa7f
2026-04-17 20:52:23 -04:00
Solomon Peachy
8ac866a749 Mechanical correction to the Swedish translation
Change-Id: I3a16883f9a9b2927fb9d941e3a4cbb8325f65848
2026-04-17 10:00:04 -04:00
Solomon Peachy
38f660c956 RFC: Document a GenAI policy.
Change-Id: I151f10f2a18eeb2a5a173dba525bbc676217fcba
2026-04-17 09:32:18 -04:00
Solomon Peachy
b80bd1a2da Translation updates:
* Korean (Hoseok Seo)
 * Polish (Adam Rak)
 * Slovak (Matej Golian)
 * Swedish (wilton millfjord)
 * US English (myself)

Change-Id: Ic664c3550785816532334af222ffc2213b5f9e58
2026-04-17 08:59:54 -04:00
seroteunine
a1040cda5d plugins: add timer/countdown plugin
-New countdown timer plugin with pause, overtime support
-Add full name to credits and manual entry
-Make status strings translatable

Change-Id: I1437b2e5ac5ede292bdab8d36e58b81326ea2ba3
2026-04-16 21:35:52 -04:00
Christian Soffke
cc7418dd8b dsp: add option to swap left and right channels
Change-Id: Id4b518638436576cfb5e747548f10ece6e58eba0
2026-04-16 21:08:53 -04:00
Christian Soffke
5ac105c837 tagtree: Add menu item "Show in Files"
Quickly reveal a database item in the File Browser.
In case of entire tables, the first entry will be revealed.

Change-Id: I4191f27ea2ab7cacbe375719314d7eb23301fd07
2026-04-16 21:04:41 -04:00
Christian Soffke
e405858b9e wps: Replace menu items "Open With" & "Delete" with "Show in Files"
Limit these (less commonly used) "file handling" operations
to the File Browser while making it quicker to reveal the
file that is currently playing from the WPS.

"Open With" and "Delete" remain available as WPS shortcuts.

Change-Id: I91e582a45998160f07a3f7e16d475d770e8c5212
2026-04-16 21:04:27 -04:00
Christian Soffke
e85f120190 playlist_viewer: add character-based Now Playing indicator
Addresses issue where it became difficult to find the
currently playing track once you scrolled away from it,
either with icons disabled in the Playlist Viewer, or if
the theme's icon set used whitespace for the Music icon.

An example scenario would be when you're moving some track
and are trying to put it next to the currently playing one.

Change-Id: I073a7e55fb723eeff755e32a78f88dcc7db1c245
2026-04-16 21:04:06 -04:00
Christian Soffke
f83cb1f7d5 fix manual a1ccb79727
Change-Id: Ic1729fb81386e2010c662373baaa31c302a80ff7
2026-04-16 14:07:17 +02:00
Roman Artiukhin
a496e01173 hiby: ability to add/remove input device
Required for dynamic inputs (like bluetooth).
Files are now opened with O_NONBLOCK, and inputs are automatically removed on poll errors.
Also added call to close all devices on power off.

Change-Id: I8991bdb881fdc00135d1fd5b01ac900c0b007aeb
2026-04-16 08:03:06 -04:00
Christian Soffke
f4dc4d89dc plugins: imageviewer: Hide info by default when loading file
Looks nicer, especially when the "View Album Art"
option is used.

Add delay to progress bar, so it only appears when
250ms have passed.

Change-Id: I183c839f1ab206385cd01327922933b544c4b78b
2026-04-16 07:58:27 -04:00
Christian Soffke
fd7ae09e7a fix FS#13864: Last char of folder and filename not voiced
Change-Id: I9c237bb7721224c6ba44b6511d72094722fa980c
2026-04-16 07:57:21 -04:00
Christian Soffke
a1ccb79727 pitchscreen: adjust keymaps for ipod and fiiom3k
ipod:
- To be more consistent with other plugins and
  (Settings) menus, press Long Select, instead of Menu,
  to reset, and press Menu, or Select, to exit screen

fiiom3k:
- Press Back, or Select, to exit screen
- Press Menu, instead of Select, to switch between modes
- Use repeat button events and adjust values by 1%, instead of
  by 0.1%, when scrolling, to speed up setting changes
- Get rid of surprising actions for Back/Menu/Volume buttons

Change-Id: Ifd16958bf56c7e20fb182aa157b4cb4dd19ac9b9
2026-04-16 13:35:38 +02:00
Solomon Peachy
41893b250f ipod4g: Pull LCD framebuffer out of IRAM
The recent pcm_mixer changes caused us to overflow IRAM by a whopping 8
bytes.  This can _probably_ be mitigated with some clever reworking but
we were clearly already on the hairy edge.

Future pending changes are likely to increase IRAM pressure so even if
we solve this issue the odds are it will reappear at a future point.

(the ipod4g's framebuffer is 5KB.  This doesn't affect the mini2g as its
 framebuffer is under 4KB, and the ipodcolor doesn't put its framebuffer
 in IRAM at all)

Change-Id: I2f50d998e969a706cc9d3a0e057cf8e6c303c9b4
2026-04-14 10:27:20 -04:00
Vencislav Atanasov
4dbcb13f58 bulgarian: Change some USB-related voice strings
Change-Id: I4c129b3672b6ffa21a8f11ca1146ffa4933474d5
2026-04-14 08:02:51 -04:00