Commit graph

5288 commits

Author SHA1 Message Date
William Wilgus
f58038b687 luadir small cleanuo
luadir stores if a file was closed, we can get this by checking for a NULL
file handle instead

Change-Id: I95b8cc84afcdfc8515af8012afb1df64d0987fc4
2026-07-17 10:54:38 -04:00
William Wilgus
3ad3fba68e filebrowse.lua don't display parent path for files
when browsing the filename gets cut off due to the
length of the parent path

Instead strip the parent from the beginning for files

Change-Id: Ib9dadffabced89b5895420cb696227ca8cc444a2
2026-07-17 10:54:38 -04:00
William Wilgus
b481c4536e FS#13954 - Extra semicolon in file paths in get_files module
date and size still have them to separate the filename from attribs

Change-Id: I3fcaa7061d14493dab178d68398bea25f8ca67d6
2026-07-17 10:54:38 -04:00
Aidan MacDonald
7e6ae1e0d8 echoplayer: enable plugins
First pass at enabling plugins and setting up keymaps.

Change-Id: I3140160bcc3044850416904840b35065f86ac32d
2026-07-12 08:56:44 -04:00
William Wilgus
ca7399821f FS#13953 - lua add get_files() to its own module
get_files(path, recurse, finddir, findfile, sort_by, cancel_fn, f_t, d_t)

get_files returns a sorted tables of directories and (another) of files

path is the starting path; recurse == false.. only that path will be searched

findfile & finddir are definable search functions
 if not defined all files/dirs are returned if false is passed.. none
  or you can provide your own function

sort_by can be by "name" "size" "date" or "none" to perform no sorting
 note: for "size" and "date" you may need to strip the attribute data to use
 the returned filename

cancel_fn if not defined or not a function no user cancel otherwise supply
    your own cancel function which returns true to cancel searching for files

f_t and d_t allow you to pass your own tables for re-use but isn't necessary

Change-Id: Ic4c2ad9c9b5abeeeeaf572880edbc8873d52066b
2026-07-09 12:45:05 -04:00
William Wilgus
40b9d09022 [bugfix] lua ipod mini gen 2 can't quit scripts while under load
I rewrote some of the problematic scripts to use an event loop which
fixed most of the issues but it turns out the underlying issue is
that when the device is under load the timeout that detects a repeat press
makes the key a repeat press and we miss the initial press completely
due to being under load and under the gun

Adds entries for PLA_EXIT and PLA_CANCEL with a Repeat press

Change-Id: I8247b0ebd37fc58608f6be126c49e56f8375e9cf
2026-07-05 22:19:14 -04:00
William Wilgus
b99b2e98df [Bugfix] lua FS#13940 - FONT_UI using last selected font instead of the UI font
FONT_UI is a placeholder when it gets assigned it isn't resolved
immediately

when its time to resolve the font it is processed with font_get(int font)
first it sets it to the last slot
and then decrements till it gets a valid font

Change-Id: I3c203d58ed2d813d206f5b435e6b55ed196cf213
2026-06-29 01:06:34 -04:00
William Wilgus
d9b1819e0b FS#13942 - Lua strftime os.date("%C")
Change-Id: I5a4cb8d362a69d12c2d7e5013dcf179cc20d01b3
2026-06-28 14:32:33 -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
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
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
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
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
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
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
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
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
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
Solomon Peachy
c2344070ac xworld: Fix set-but-unused variable warning with GCC16
Change-Id: I5e20a32d84ebc7ca56278988b8add9ee644138ba
2026-05-25 13:00:30 -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
Solomon Peachy
cfbbf5b488 pdbox: Fix up a pile of set-but-unused variable warnings with GCC16
Change-Id: I8de93d879ade61251fdde205353120a8e583b157
2026-05-23 21:31:25 -04:00
Solomon Peachy
95df5fdec0 doom: Fix set-but-unused warnings with GCC16
Change-Id: Iecd8ea9f5dc95f37955bed5e4892a90a93472cc6
2026-05-23 21:22:52 -04:00
William Wilgus
4ffd098ac9 [bugfix] text_viewer plugin, wonky word wrap, line pos buffer overflow
IpodVT reported odd word wrapping in the case of a perfectly fitting line on a space
which carried over to the next line

in the process I got a ASAN overflow on the line buffer due to
the possibility that lines_per_page - 1 might be -1 and then
reading off in space for an offset into the file
not sure that this would really cause an issue since it would presumably
be bounded within the boundries of the file anyway

Change-Id: Ib5b2c5a30b58faf8bda653f9b9d8d7f76cfb8069
2026-05-23 18:24:01 -04:00
William Wilgus
f456dbfa52 [Bugfix] FS#13902 lua strfrtime wrong month field, did not add one to month
posix month field is called mon not month
mon goes from 0-11 so strfrtime needs to add 1 to the number for %m
day of week goes 0-6 where 0 = sunday
day of year goes 0-365 (365 on a leap year)

according to lua everything starts at 1
so month is 1-12
day of week goes 1-7 1 = sunday
day of year is 1-365 (366 on a leap year)

added some fields in the time_date example

Change-Id: Icd502b172285d23133488aa3456786d756667bfa
2026-05-22 18:10:36 -04:00
Christian Soffke
29d62e933f plugins: text_editor: fix list items that continue to scroll (FS#13900)
When using a theme with custom skinned lists
(e.g. Themify 2), a line in Text Editor will
continue to scroll after opening the context
menu, because you're switching from an un-
skinned list to a skinned list, which means
that list-skinned.c/list_draw isn't calling
scroll_stop_viewport for the list_text_vp,
as would be the case for un-skinned lists.

Change-Id: I952937166d8f17c9d57f4d93e715de970c49e5e8
2026-05-19 12:20:11 -04:00
Solomon Peachy
cae433608f build: Silence a pile of set-but-not-used warnings with GCC16 in apps/
The compiler is smart enough to optimize away dead stores but let's
just get rid of them in the first place

Change-Id: I5c85d7c05ef03b084205356a21248f7b049296b0
2026-05-17 08:03:44 -04:00
mojyack
2c0381a34e plugins: mpegplayer: libmpeg2: idct_armv6.S: use explicit register pair for ldrd
Change-Id: I65c7516f500cfe9f2b4990f769e9d85708f7fc62
2026-05-17 07:36:11 -04:00
William Wilgus
7c2e84ad2f FS#13898 expand date_time.lua example
os.date(*t) did not return table when *t supplied because
require("strfrtime.lua") was not loaded

Change-Id: I89b02adad633dca0106b571bdb4b10ffb39cbcf6
2026-05-16 15:54:42 -04:00
William Wilgus
17d28b96b6 lua rocklib.c add splash_progress function
Change-Id: I864a301368c3144a7808ecfa9644e679af2ac727
2026-05-16 14:56:51 -04:00
Solomon Peachy
89cb41c322 pdbox: Add a keymap for the ErosQ family, enable it in the build
Change-Id: I9df8d8a8eac161aeaa133e234cc0c2a60b2f3f93
2026-05-15 10:54:08 -04:00
Solomon Peachy
f774de61b6 xworld, pdbox: Fix issues with using strncpy
Change-Id: Iaed18b7c856b7febef443d1e3e5f6b527b32ecae
2026-05-15 10:37:35 -04:00
Skye
5951f6e5e9 libc: move strncpy to core
Change-Id: If005a0305cedbab85905536238d0f799f19213e1
2026-05-15 10:04:06 -04:00
Christian Soffke
bc528c4079 plugins: properties: don't clear UI viewport for dirs
Accidentally made the vp flash in previous commit.

Dir scanning doesn't display a progress bar
and already handles its own drawing

Change-Id: Id0e67d62081dfe4b22e91c775cd80af2e55a4b69
2026-05-09 07:03:58 +02:00
Christian Soffke
325a028af4 plugins: properties: clear UI viewport at startup
Otherwise, with themes that adjust the viewport
for the current activity, the background behind
the progress bar may look glitchy while
scanning items, until the list is displayed

Change-Id: I27a207b37c3209eae9bc61e1fd0862fb5872be57
2026-05-08 17:00:15 +02:00
Christian Soffke
ae871d25a9 gui: skin_engine: reduce updates
Slight optimization of c145d19. Not supposed to result in
any visible difference.

- if UI viewport is drawn for GUI_EVENT_NEED_UI_UPDATE,
  it doesn't need to do a viewport update; skin_render
  already updates the display

- skin_render_deferred shouldn't need to request that
  the skin perform an immediate update

Change-Id: Id03cf89357eaf0d61af1e928c94942d8c4882dba
2026-05-08 15:43:55 +02:00
JJ Style
34054eaa42 dart_scorer: scale better on smaller devices
Calculates sizes of strings to position properly on device, and reduce length of some strings so it scales better on smaller devices as it was unusable on a sansa clip zip

Change-Id: Iad16c15cf85cb79fc9a9ee7146aa40c1c741c26d
2026-05-06 13:20:48 -04:00
Vencislav Atanasov
02638c1cb8 s5l87xx: (Re)name the SHA-1 registers
Synced with the s5l8702-sha1 Linux driver in the freemyipod fork

Change-Id: I5243346205f7883f4271d4b272936dd125adb496
2026-05-04 07:16:29 -04:00
Christian Soffke
6d699f08f4 plugins: imageviewer: fix incomplete previous commits
missed in commit 2690418:
grayscale targets need to have access
to the Display Options menu now, since
it contains the hide_info option

missed in commit f4dc4d8:
"resizing" message for bmp files wasn't
hidden even with hide_info enabled

Change-Id: I1a73e3816305ab6f032fc226d79f09df0d9aa96b
2026-05-03 18:09:44 +02:00
mojyack
ae8013405a plugins: rockboy: respect GLOBAL_LDOPTS
Change-Id: I5224e39b41bda71506ee99d9df79b7b19f7e29cb
2026-05-03 09:06:29 -04:00
mojyack
790a8aa560 plugins: chessbox: respect GLOBAL_LDOPTS
Change-Id: Ia9b20c24f91a7fd9fa7b0a73e352199aeaf6dd05
2026-05-03 09:06:17 -04:00
Aidan MacDonald
2053bba561 makefiles: fix duke3d overlay not using objcopy_plugin
This should use $(call objcopy_plugin) in order to
generate the correct binary format on platforms where
the plugin binary format differs from the main binary
format (ie. STM32).

Change-Id: I027cc74e3c5d55b9a3538f4f16c3fd5ece25a4b5
2026-05-03 13:10:08 +01:00
Aidan MacDonald
30adfbf5c9 puzzles: fix possible crash due to non-NULL terminated list
Change-Id: Id0cadfd6d2d88e8cd27a34d042403ec54e8aca41
2026-05-03 13:10:08 +01:00
Aidan MacDonald
4f2c918f28 mpegplayer: disable ARM assembly code for Cortex-M
Change-Id: I6fe8a359ef6d6160918239bf5c45a3034e52356b
2026-05-03 12:19:48 +01:00
Solomon Peachy
0dc670d25c build: Make bitmap object files position independent to silence linker warnings
Finally addresses the "warning: creating DT_TEXTREL in a shared object" warnings
seen when linking plugins that reference bitmaps.

This currently only happens with simulator builds using recent-ish
toolchains (GCC >= 12 IIRC).  However, binutils 2.46 promotes this
warning to an error, so it's finally tracked down and addressed.

Change-Id: I4b4926c14f7c0047496892c55009c26da2a4756d
2026-05-02 13:22:51 -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