Commit graph

39102 commits

Author SHA1 Message Date
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
mojyack
cfb01cfd58 pcmbuf: remove pcmbuf_sampr
Change-Id: I5da91acbf8a3e23446d38b9e62d4e1c67d41aba9
2026-04-14 07:44:16 -04:00
mojyack
498a9fffeb pcm_mixer: remove mixer_sampr
Change-Id: I693b3c2ab639f09e918790dd6a06977991f872cc
2026-04-14 07:43:35 -04:00
mojyack
e2040cc98c pcm_mixer: introduce mixer_buffer_cbs
intended to add sampr_changed callback to buffer hook as well as mixer
playback

Change-Id: I9df6194a884cfb813342a827b7fdc3bccbe3d60c
2026-04-14 06:50:39 -04:00
mojyack
cb04b8167c pcm_mixer: introduce mixer_play_cbs
the added sampr_changed callback can be used to notify the mixer user of
frequency changes

Change-Id: I309db76576090fd5c019a1ba082af446129dd4a3
2026-04-14 06:47:36 -04:00
Solomon Peachy
86639acc5e Mass language update for changed description of LANG_USB_MODE
Change-Id: I4b0508272c06164dcdca0c3c3694e1d645d44e02
2026-04-13 20:34:57 -04:00
Christian Soffke
c765addd24 Eliminate default browser setting (e881655)
Keeps track of most recently used browser
across reboots instead.

Change-Id: I0de2c3acc69f827aac68e7dfcfc4af1a4f8c66de
2026-04-13 19:20:27 -04:00
Vencislav Atanasov
719f0f1a3b settings: Move USB-related settings to their own submenu
Change-Id: Ic35025633f655138767e82bf4369e0626e91b4d4
2026-04-13 18:55:30 +03:00
mojyack
a6a1be6e30 plugins: remove hw_freq_sampr from plugin api
replaced by pcm_current_sink_caps

Change-Id: Ib17a1f5bb8ae479278ef467dfcc99fead6f1499e
2026-04-11 14:20:44 -04:00
mojyack
012c61eadf plugins: mikmod: remove hw_freq_sampr usage
TODO:

 * Dynamically hide the sample rates that aren't supported
   by the current sink
 * Better "default" selection based on hardware type/speed

Change-Id: I261544fc3ba78429eaaa81c89aebd2e68106caa3
2026-04-11 14:18:36 -04:00
Christian Soffke
27ebdfcb25 settings: fix mismatched resume setting variable types
The SYSTEM_STATUS macro for these variables has an
F_T_INT flag, which may result in an unexpected value
being written to the resume file for PLM and PVS.

Change-Id: Iea18efbdc68604e1297721d132a9a5b7d056ffad
2026-04-09 18:04:48 +02:00
Solomon Peachy
d82d0be595 FS#13802 - Correct untranslated menu headings in mpegplayer
Every menu heading except the top-level "MPEG Player" (ie the name of
the plugin) now uses pre-existing translated strings.

Change-Id: I65ee64ddc537be4947872da4757bc2f6a27d0bae
2026-04-06 08:13:30 -04:00
mojyack
4cd3d3c519 doom: fix out-of-bounds access of caps->samprs
Change-Id: Icde0146648477dbd0442c67258ff6ae1ff62c994
2026-04-05 14:48:28 -04:00
Solomon Peachy
b5e3789dc1 manual: Fix red due to a missing }
Change-Id: I86a3f0681ef15bee61489c2df9e013c27d9b55f9
2026-04-03 18:04:38 -04:00
Solomon Peachy
1c4774e7e9 manual: Correct dead links for Sandisk Fuze+ firmware download
All URLs into Sandisk's web site return 404 or 403 errors, so
point at our local mirror of Sansa firmware files instead.

Change-Id: Ib3efcb62b13431f6416a320483877ca162ea5990
2026-04-03 17:33:08 -04:00
Solomon Peachy
868da83e92 FS#13849: Correct dead stock firmware links for SansaAMS devices
(Sandisk no longer hosts any firwmare for these old devices, so point
 users at our own mirror instead)

Change-Id: Ibdcddcd2560b2062e84c82c53049022a7f76b226
2026-04-03 17:25:43 -04:00
Christian Soffke
75fa8e6449 manual: "Always remember last folder" setting update
- move to File View settings menu
- add to config file options

Change-Id: Id676fd5e0cdc9f0471b975addb1fecd62f3cd61d
2026-04-03 02:37:27 +02:00
Christian Soffke
4b9c78e01b filetree: restrict keep_directory setting (c86fd23) to Files menu
Prevents the most recent File Browser directory from
being overwritten when ft_load is called from places other
than the Files menu, such as when browsing the Plugins
menu or the Playlist Catalogue (coming from the main menu,
or from the "Add to Playlist" context menu).

Change-Id: Idbdb2d92c6abcc5cca022d3025b48e0cd4b32f17
2026-04-02 15:28:31 +02:00
Solomon Peachy
0e7718ed4e voice: Add Norwegian Nynorsk voicefile synthesis
(Enabled, as it now has >98% coverage)

Change-Id: Ie14c28cf279cf8bb2215deb8f1ec597cb980b3ab
2026-04-01 11:04:53 -04:00
Solomon Peachy
a2f652cf1f disktidy: Add '__MACOSX' directories to the list
Change-Id: If25ccbeaf1ada8ae4bcc9a1853302c297f7a3e08
2026-04-01 10:32:40 -04:00
mojyack
6be230275e plugins: pdbox: remove HW_SAMPR_CAPS usage
Change-Id: I4e37213a38ac5d1260bc2fa208828abd55fc2647
2026-04-01 08:48:12 -04:00
Solomon Peachy
c5b171da41 FS#13847 - Updated Norwegian Nynorsk translation (Eivind Ødegård)
Change-Id: Iccb88dcb80b4c316ad1701fada1d0aac54958e51
2026-04-01 08:25:23 -04:00
Solomon Peachy
65f2105445 Revert "sdlapp: Enable compilation of most apps/games"
This reverts commit 96b5642c93.

Reason for revert: Accidentlly merged this before it was ready.

Change-Id: I9344988f6556b774479dd4fd209f30e450ad0858
2026-03-30 20:52:42 -04:00
Solomon Peachy
78ba3211be FS13846: Russian translation update (Sergey Puskov)
Change-Id: Ifa9dff84380f20637e39900409bacbb690d40634
2026-03-30 20:50:13 -04:00
Erin of Yukis
96b5642c93 sdlapp: Enable compilation of most apps/games
Removes `#ifdef`s in many places to just have `HAVE_TOUCHSCREEN` be the
input fall back, as is already tentatively the case in the code.

Solitaire was the only app excluded since there aren’t enough buttons
for it mapped in the SDL layer.

Change-Id: I62450b7110b86c8037a121e96cd2e46754be79a3
2026-03-29 20:32:58 -04:00
Solomon Peachy
e677895e29 xrick: Fix a race condition that could result in audio stopping
get_more() can disable audio when there's nothing more to genreate
but that can get called (and "fail") _before_ we set the flag
that audio is turned on.  If this occurs, we will incorrecly
set the "audio on" flag after the failure which will prevent
the mixer from being re-started.

(We're at the mercy of thread scheduling)

Change-Id: I4f6c50a71c7ad685ff45f775e7e4b1c61b8b7777
2026-03-29 18:07:00 -04:00
Solomon Peachy
f235443ba1 FS13829 - Add Android-specific entries to disktidy plugin
Notably, the 'Android' and 'LOST.DIR' top-level directories.

Change-Id: Idee411e518a8b73e4f0a4283e368e35c8a2f0938
2026-03-29 09:25:28 -04:00
mojyack
03060090c9 usb: arc: implement batched request api
Change-Id: I9d677286589a336d7258cf2c9d3c7d2847243dfa
2026-03-29 09:04:10 -04:00
mojyack
f84003fa40 usb: add fallback implementation of emulated batch api
some targets can process requests fast enough without dedicated
batch api implementation.
provide generic implementationn for such targets.

Change-Id: I152681441e70e0e98396274d9305d371d2bbfbe3
2026-03-29 09:03:56 -04:00