Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



whenwhatwherewho
Wednesday 15:23 e57b4f9099: gui: Remove gui_synclist_item_is_onscreen()

Only the "Rockbox Info" screen uses it for a rather silly purpose, so remove the function. This helps to decouple things from the GUI.
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/menus/main_menu.c [diff]
Aidan MacDonald
Wednesday 15:23 1c5a0497cf: gui: Remove list "limit_scroll" member

Get rid of the "limit_scroll" member from lists and make it a local variable of gui_synclist_do_button().

Bump plugin API version since struct gui_synclist was changed.
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/plugin.h [diff]
Aidan MacDonald
Wednesday 15:22 d5a081cbd1: gui: Remove "enum list_wrap" from list action functions

Removing the "list_wrap" argument is actually pretty easy. In practice, almost all lists are using LIST_WRAP_UNLESS_HELD behavior so we can make that the default. A couple of lists disable wraparound with LIST_WRAP_OFF; this is now achieved by setting the list "wraparound" flag to false when setting up the list. LIST_WRAP_ON was unused and is of questionable value, so it has been removed entirely.

This makes list wraparound behavior a property of the list, controlled solely by the "wraparound" flag. The result is a simpler list API and implementation, without changing the behavior of any lists.
apps/bookmark.c [diff]
apps/cuesheet.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/gui/option_select.c [diff]
apps/menu.c [diff]
apps/onplay.c [diff]
apps/playlist_viewer.c [diff]
apps/plugin.h [diff]
apps/plugins/calendar.c [diff]
apps/plugins/chessbox/chessbox_pgn.c [diff]
apps/plugins/keybox.c [diff]
apps/plugins/keyremap.c [diff]
apps/plugins/lrcplayer.c [diff]
apps/plugins/main_menu_config.c [diff]
apps/plugins/open_plugins.c [diff]
apps/plugins/properties.c [diff]
apps/plugins/puzzles/rockbox.c [diff]
apps/plugins/random_folder_advance_config.c [diff]
apps/plugins/rb_info.c [diff]
apps/plugins/shopper.c [diff]
apps/plugins/shortcuts/shortcuts_view.c [diff]
apps/plugins/text_editor.c [diff]
apps/radio/presets.c [diff]
apps/recorder/recording.c [diff]
apps/screens.c [diff]
apps/tree.c [diff]
docs/PLUGIN_API [diff]
Aidan MacDonald
Wednesday 15:22 ff378deb69: gui: Remove gui_synclist_limit_scroll()

Since gui_synclist_do_button() overrides the setting at runtime there is no reason to have a public API call to set it. Really it should be a local variable, but it will be simpler to do that after refactoring how list wraparound behavior is handled.
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/gui/option_select.c [diff]
apps/menu.c [diff]
apps/menus/display_menu.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/chessbox/chessbox_pgn.c [diff]
apps/plugins/keybox.c [diff]
apps/plugins/keyremap.c [diff]
apps/plugins/open_plugins.c [diff]
apps/plugins/properties.c [diff]
apps/plugins/puzzles/rockbox.c [diff]
apps/plugins/random_folder_advance_config.c [diff]
apps/plugins/rb_info.c [diff]
apps/plugins/shopper.c [diff]
apps/plugins/shortcuts/shortcuts_view.c [diff]
apps/plugins/text_editor.c [diff]
docs/PLUGIN_API [diff]
Aidan MacDonald
Wednesday 14:22 ead172c05d: gui: Remove redundant copies of list scrolling settings

gui_list_screen_scroll_step() and gui_list_screen_scroll_out_of_view() just copy the global setting into a local static variable. Since they don't do anything special when the setting changes it's simpler to use the global setting directly.
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/menus/display_menu.c [diff]
apps/plugins/rb_info.c [diff]
apps/settings.c [diff]
apps/settings_list.c [diff]
Aidan MacDonald
Monday 12:30 fe6aa21e9e: Remove YUV blitting functions and LCD modes

None of this is needed now that mpegplayer is gone.
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/test_fps.c [diff]
docs/PLUGIN_API [diff]
firmware/SOURCES [diff]
firmware/asm/arm/lcd-as-memframe.S [diff]
firmware/asm/lcd-as-memframe.c [diff]
firmware/drivers/lcd-color-common.c [diff]
firmware/drivers/lcd-memframe.c [diff]
firmware/export/config/mrobe500.h [diff]
firmware/export/lcd.h [diff]
firmware/target/arm/as3525/lcd-as-e200v2-fuze-fuzev2.S [deleted]
firmware/target/arm/as3525/lcd-fuze.c [diff]
firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c [diff]
firmware/target/arm/ipod/lcd-as-color-nano.S [deleted]
firmware/target/arm/ipod/lcd-color_nano.c [diff]
firmware/target/arm/ipod/video/lcd-as-video.S [diff]
firmware/target/arm/ipod/video/lcd-video.c [diff]
firmware/target/arm/iriver/h10/lcd-as-h10.S [deleted]
firmware/target/arm/iriver/h10/lcd-h10_20gb.c [diff]
firmware/target/arm/iriver/h10/lcd-h10_5gb.c [diff]
firmware/target/arm/lcd-c200_c200v2.c [diff]
firmware/target/arm/pbell/vibe500/lcd-as-vibe500.S [deleted]
firmware/target/arm/pbell/vibe500/lcd-vibe500.c [diff]
firmware/target/arm/philips/hdd1630/lcd-as-hdd1630.S [deleted]
firmware/target/arm/philips/hdd1630/lcd-hdd1630.c [diff]
firmware/target/arm/philips/hdd6330/lcd-as-hdd6330.S [deleted]
firmware/target/arm/philips/hdd6330/lcd-hdd6330.c [diff]
firmware/target/arm/philips/sa9200/lcd-as-sa9200.S [deleted]
firmware/target/arm/philips/sa9200/lcd-sa9200.c [diff]
...and 24 more files.
Aidan MacDonald
Monday 12:29 b371ff1f47: mrobe500: Fix missing parentheses in #define
firmware/export/config/mrobe500.h [diff]
Aidan MacDonald
Sunday 15:57 d25d24812e: RFC: Get rid of mpegplayer plugin

It might have made sense once upon a time, but in today's world...
apps/lang/english.lang [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SUBDIRS [diff]
apps/plugins/bitmaps/mono/SOURCES [diff]
apps/plugins/bitmaps/mono/mpegplayer_status_icons_12x12x1.bmp [deleted]
apps/plugins/bitmaps/mono/mpegplayer_status_icons_16x16x1.bmp [deleted]
apps/plugins/bitmaps/mono/mpegplayer_status_icons_8x8x1.bmp [deleted]
apps/plugins/mpegplayer/SOURCES [deleted]
apps/plugins/mpegplayer/alloc.c [deleted]
apps/plugins/mpegplayer/audio_thread.c [deleted]
apps/plugins/mpegplayer/disk_buf.c [deleted]
apps/plugins/mpegplayer/disk_buf.h [deleted]
apps/plugins/mpegplayer/libmpeg2/AUTHORS [deleted]
apps/plugins/mpegplayer/libmpeg2/README [deleted]
apps/plugins/mpegplayer/libmpeg2/README.rockbox [deleted]
apps/plugins/mpegplayer/libmpeg2/attributes.h [deleted]
apps/plugins/mpegplayer/libmpeg2/decode.c [deleted]
apps/plugins/mpegplayer/libmpeg2/header.c [deleted]
apps/plugins/mpegplayer/libmpeg2/idct.c [deleted]
apps/plugins/mpegplayer/libmpeg2/idct_arm.S [deleted]
apps/plugins/mpegplayer/libmpeg2/idct_armv6.S [deleted]
apps/plugins/mpegplayer/libmpeg2/idct_coldfire.S [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp.c [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp.h [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp_arm_c.c [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp_arm_s.S [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp_c.c [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp_coldfire_c.c [deleted]
apps/plugins/mpegplayer/libmpeg2/motion_comp_coldfire_s.S [deleted]
apps/plugins/mpegplayer/libmpeg2/mpeg2.h [deleted]
...and 30 more files.
Solomon Peachy
Sunday 13:21 9ce5b2a2ed: gui: Remove show/hide selection option in lists

The implementation of the "show_selection_marker" option in lists isn't great. It's a cosmetic option used to hide the selection, but it causes the list to do funny things to the selected_item and doesn't play nice with voiced menus, since these rely on the selection to determine what item is spoken.

There are only two user-facing lists that use the option, the
"Rockbox Info" screen and a menu in the superdom plugin. The rest are debug screens, and cosmetics don't matter much there.

Given how little used the option is, and its issues, removing it seems reasonable.
apps/debug_menu.c [diff]
apps/gui/bitmap/list-skinned.c [diff]
apps/gui/bitmap/list.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/menus/main_menu.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/lrcplayer.c [diff]
apps/plugins/superdom.c [diff]
Aidan MacDonald
Sunday 12:57 c1d75a6bcb: Fix yellow from 5b0506e9de
apps/debug_menu.c [diff]
Aidan MacDonald
Sunday 12:20 5b0506e9de: gui: Constify list title text

Use const char* pointers for list titles. Only one debug menu actually modifies the title, and in that case it's legal to cast away const because the title points to a known mutable buffer on the stack.
apps/debug_menu.c [diff]
apps/gui/bitmap/list.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/gui/statusbar-skinned.c [diff]
apps/gui/statusbar-skinned.h [diff]
apps/plugin.h [diff]
apps/plugins/lib/printcell_helper.c [diff]
Aidan MacDonald
1st Oct 11:58 420fb1163c: skin engine: Fix bug with %Vs(color) tag

The %Vs(color) tag doesn't set the text style properly and causes the background to not be cleared when rendering lines. For static text this is rarely a problem, but for scrolling text it'll cause the text to "smear" once it starts scrolling.

Fix this by setting STYLE_DEFAULT, so the background gets redrawn when the line scrolls.

Bug report: https://forums.rockbox.org/index.php/topic,54320.0.html
apps/gui/skin_engine/skin_parser.c [diff]
Aidan MacDonald
30th Sep 09:49 3bc6408bbe: lcd: Fix incorrect use of LCD_STRIDEFORMAT for remote LCDs

The get_address_fn implementations for some remote LCDs were checking LCD_STRIDEFORMAT unconditionally, but that macro is only valid for the main LCD. The remote LCD code only supports horizontal strides, so when compiling for a remote LCD, force the use of horizontal stride addressing.

This fixes a buffer overflow and out of bounds write that occurs with the M:Robe 500 remote LCD. (Tested with sim + ASan only.)
firmware/drivers/lcd-1bit-vert.c [diff]
firmware/drivers/lcd-2bit-vi.c [diff]
Aidan MacDonald
30th Sep 09:42 f373c97c90: Define LCD_STRIDEFORMAT unconditionally

Instead of putting "#ifdef LCD_STRIDEFORMAT" at every usage of the macro it's simpler to have config.h define LCD_STRIDEFORMAT to the default of horizontal stride when the target leaves it unspecified.
apps/plugins/SOURCES [diff]
apps/plugins/SUBDIRS [diff]
apps/plugins/bitmaps/native/SOURCES [diff]
apps/plugins/imageviewer/jpeg/yuv2rgb.c [diff]
apps/plugins/imageviewer/ppm/ppm_decoder.c [diff]
apps/plugins/invadrox.c [diff]
apps/plugins/lib/bmp_smooth_scale.c [diff]
apps/plugins/lib/osd.c [diff]
apps/plugins/lib/pluginlib_bmp.c [diff]
apps/plugins/lib/xlcd_scroll.c [diff]
apps/plugins/lua/rocklib_img.c [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/plugins/puzzles/rockbox.c [diff]
apps/plugins/test_viewports.c [diff]
apps/plugins/xworld/sys.c [diff]
apps/recorder/resize.c [diff]
firmware/SOURCES [diff]
firmware/drivers/lcd-1bit-vert.c [diff]
firmware/drivers/lcd-2bit-horz.c [diff]
firmware/drivers/lcd-2bit-vert.c [diff]
firmware/drivers/lcd-2bit-vi.c [diff]
firmware/drivers/lcd-color-common.c [diff]
firmware/export/config.h [diff]
firmware/export/lcd.h [diff]
firmware/target/arm/tms320dm320/mrobe-500/lcd-mr500.c [diff]
firmware/target/hosted/sdl/lcd-sdl.c [diff]
Aidan MacDonald
27th Sep 14:00 9ed36ec22f: FS #13361: Fix some compilation under MacOS (Michael Landherr)
docs/CREDITS [diff]
firmware/export/config.h [diff]
Solomon Peachy
27th Sep 13:13 09cb3c7843: lcd: Remove HAVE_VIEWPORT_CLIP

This was only enabled for the mrobe500 and sansaconnect targets. Most targets are therefore running without this "safety" measure, and presumably we'd have noticed long ago if there was a problem. So in all likelihood this is just a bunch of dead code that we don't need to carry around.
firmware/drivers/lcd-16bit-common.c [diff]
firmware/drivers/lcd-16bit-vert.c [diff]
firmware/drivers/lcd-16bit.c [diff]
firmware/drivers/lcd-1bit-vert.c [diff]
firmware/drivers/lcd-24bit.c [diff]
firmware/drivers/lcd-2bit-horz.c [diff]
firmware/drivers/lcd-2bit-vert.c [diff]
firmware/drivers/lcd-2bit-vi.c [diff]
firmware/drivers/lcd-bitmap-common.c [diff]
firmware/drivers/lcd-color-common.c [diff]
firmware/export/config/mrobe500.h [diff]
firmware/export/config/sansaconnect.h [diff]
Aidan MacDonald
25th Sep 22:28 24daa26598: FS13356: Update Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
25th Sep 20:15 36ea69b27e: FS #13365: Updated Italian translation (Alessio Lenzi)
apps/lang/italiano.lang [diff]
Solomon Peachy
25th Sep 11:23 464889ecee: Fix red in e75a3fb8
firmware/export/config.h [diff]
Aidan MacDonald
25th Sep 10:49 e75a3fb8c7: usb: add debounce interval for USB status by event

This makes status by event debounce status changes over a 200ms period, which is what polling was already using.

This is helpful on targets where events are excessively noisy and generate a lot of transitions during insertion and extraction.
firmware/usb.c [diff]
Aidan MacDonald
25th Sep 10:05 e4aec7d648: key remap: simplify and use movable allocations

Have action.c control the key remap buflib allocation so that it can be made movable. With memory management offloaded, core_keymap.c only needs to deal with loading keymap files. Simplify the code there and use buflib pinning so the file can be loaded directly into the buffer.
apps/action.c [diff]
apps/action.h [diff]
apps/core_keymap.c [diff]
apps/core_keymap.h [diff]
Aidan MacDonald
19th Sep 19:09 f47aa584a8: buflib: add pin/unpin operation

An allocation is pinned by calling buflib_pin() to up its pin count. The pin count is like a reference count: when above 0, buflib won't move the allocation and won't call its move callbacks. This makes it safe to hold the pointer returned by buflib_get_data() across yields or allocations.

Note that pinned allocations can still shrink because there are some use cases where this would be valid, if buffer users coordinate with the shrink callback.
firmware/buflib.c [diff]
firmware/core_alloc.c [diff]
firmware/include/buflib.h [diff]
firmware/include/core_alloc.h [diff]
Aidan MacDonald
19th Sep 19:09 ecfec3e9bf: buflib: add handle_to_block_end
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 88b21731fc: buflib: enable all paranoia checks

Since allocation is infrequent in Rockbox enabling the extra checks to catch memory corruption is probably worth the time and code size cost.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 8f896b14d3: buflib: remove the 'name' member from union buflib_data

Using a length 1 char array to point to the name buffer triggers a -Warray-bounds warning from GCC when fortified strcpy is used.

This type of construct isn't safe in general -- if the compiler makes assumptions based on the array bound it can create subtle bugs when accessing the array out of bounds.

Instead, add a function get_block_name() which returns a pointer to the name field by casting. This suppresses the warning and it should be a bit more portable.
firmware/buflib.c [diff]
firmware/include/buflib.h [diff]
Aidan MacDonald
19th Sep 19:09 6e9b1b344b: buflib: remove buflib_print_allocs / buflib_print_blocks

These don't have any users and there is already another way to print blocks (which is actually used by the debug menu).
firmware/buflib.c [diff]
firmware/include/buflib.h [diff]
firmware/include/core_alloc.h [diff]
Aidan MacDonald
19th Sep 19:09 3090cf0da4: buflib: update BUFLIB_ALLOC_OVERHEAD

Allocation overhead should be 5 units, not 6.
firmware/include/buflib.h [diff]
Aidan MacDonald
19th Sep 19:09 59edcc57a2: buflib: omit CRC field if CRC paranoia is not enabled

If we don't check or generate CRCs then the CRC field can be left out of the header, which reduces buflib overhead slightly.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 dcc4e54b77: buflib: refactor CRC checks as paranoia

Move CRC checking and updating behind a paranoia bit, like the other checks, so it can be enabled and disabled.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 f82f3044a7: buflib: add paranoia checks for handles

Handle checks ensure that the data in the handle table points within buflib memory and checks handle entry pointers in block headers before dereferencing them.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 73b9b227eb: buflib: add block length paranoia checks for loops

Tighten up checking by adding length checks to loops which ensure the iteration stays within bounds. Check is disabled by default and can be enabled using a BUFLIB_PARANOIA bit.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 b12427741a: buflib: clean up and refactor to improve maintainability

Buflib is written with a lot of hardcoded offsets to header fields, arbitrary pointer arithmetic, and similar but not quite duplicated code, making maintenance a nightmare.

Most of the pointer arithmetic involving header fields is replaced by indexing from two well-defined pointers, the block start and end pointers. The start pointer points to the first header field, and he end pointer is one past the end of the header.

Hardcoded field indices are replaced by two enums. Forward indices
(fidx_XXX) are used to access fields from a block start pointer and negated backward indices (-bidx_XXX) are used to index from a block end pointer. There is no overlap between the indices because of the variable length name field in the middle of the header. The length of the fixed fields in the block header is now a #define'd constant rather than being open coded.

There is now a function to acquire the block end pointer from the user data pointer (ie. the pointer stored in the handle table). The old code was not consistent in this; some functions would handle a non-aligned user pointer, which may occur as a result of shrinking, while other uses just assumed the user pointer was aligned.

Block CRC calculations have also been factored out to a function that accepts block start and end pointers.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 fdde6bb5a7: buflib: optimize getting start of block from end of block

The block header has a variable length due to the embedded name. The name length is stored at the back of the header after the name, in order to allow finding the start of the header if only the user data pointer is known (eg. from the handle table).

The name length is actually not interesting in itself; storing the total length of the block header instead is marginally more efficient, saving one addition in handle_to_block().

Instead the extra arithmetic must be done by buflib_get_name(), which is a much less common operation than handle_to_block().
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 ef476ba298: buflib: correct a confusingly indented comment
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 c8365b2bdd: buflib: fix bug in handle_table_shrink

The way it iterated over the handle table is unsafe if *every* handle is free, leading to an out of bounds access.

This is a contrived example, but the bug can be triggered by making several allocations, freeing them out of order so that the handle table remains uncompacted, and then triggering a compaction using buflib_alloc_maximum().
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 4d3bf1c446: buflib: add comment in handle_alloc, remove a dead store

It isn't obvious why the "handle->val = -1" at the end of handle_alloc is needed so add an explanatory comment. But "handle->val = 1" prior to calling handle_free is simply a dead store.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 840f6b79c7: buflib: update first_free_handle in handle_alloc

Since we're scanning the handle table for the first free slot, we know none of the scanned slots are free. Use that knowledge to update first_free_handle and avoid rescanning filled slots again when the next handle is allocated.
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 f622bcfe4f: buflib: fix buflib_context_relocate alignment check

Use the standard IS_ALIGNED macro and check alignment against sizeof(buflib_data), as it can be greater than 4 bytes if we're on a 64-bit platform (eg. simulator).
firmware/buflib.c [diff]
Aidan MacDonald
19th Sep 19:09 bcaa9465e9: buflib: optimize find_block_before

Exiting the loop implies next_block == block, so remove that check. The check ret < block is false only if block is the first block, which can be checked before the loop, saving a few cycles in that case.
firmware/buflib.c [diff]
Aidan MacDonald
18th Sep 17:09 6beebd75e7: Cabbie v2: 240x320: Increase font size to 18. Remove linespace and increase the size of the album art slightly to better utilize the screen area.
apps/settings_list.c [diff]
wps/WPSLIST [diff]
wps/cabbiev2.240x320x16.wps [diff]
James D. Smith
18th Sep 13:26 38a0f1a96f: Cabbie v2: Place album above title and track on the WPS. The idea is to have the album immediately beneath any album art.
wps/cabbiev2.112x64x1.wps [diff]
wps/cabbiev2.128x128x16.wps [diff]
wps/cabbiev2.128x128x2.wps [diff]
wps/cabbiev2.128x160x16.wps [diff]
wps/cabbiev2.128x64x1.wps [diff]
wps/cabbiev2.128x96x16.wps [diff]
wps/cabbiev2.128x96x2.wps [diff]
wps/cabbiev2.132x80x16.wps [diff]
wps/cabbiev2.138x110x2.wps [diff]
wps/cabbiev2.160x128x1.wps [diff]
wps/cabbiev2.160x128x16.wps [diff]
wps/cabbiev2.160x128x2.wps [diff]
wps/cabbiev2.176x132x16.wps [diff]
wps/cabbiev2.176x220x16.wps [diff]
wps/cabbiev2.220x176x16.wps [diff]
wps/cabbiev2.240x320x16.mini2440.wps [diff]
wps/cabbiev2.240x320x16.wps [diff]
wps/cabbiev2.240x400x16.wps [diff]
wps/cabbiev2.320x240x16.mrobe500.wps [diff]
wps/cabbiev2.320x240x16.wps [diff]
wps/cabbiev2.320x480x16.wps [diff]
wps/cabbiev2.360x400x16.wps [diff]
wps/cabbiev2.400x240x16.wps [diff]
wps/cabbiev2.480x800x16.wps [diff]
wps/cabbiev2.800x480x16.wps [diff]
wps/cabbiev2.96x96x16.wps [diff]
James D. Smith
18th Sep 12:53 972c8c0ab6: Suppress bogus GCC 12 -Waddress warnings for SKINOFFSETTOPTR

This appears to be a bug in GCC 12 due to more aggressive -Waddress warnings. According to the GCC documentation, the warning should be suppressed because the "problem" code is coming from a macro, but it doesn't happen for cases like "if(!SKINOFFSETTOPTR(...))" where the macro is negated.

Assigning the result of SKINOFFSETTOPTR() to a temporary and checking that suppresses the warning.
lib/skin_parser/skin_parser.h [diff]
Aidan MacDonald
17th Sep 14:14 bab8a41532: x1000: add support for GD5F1GQ4xExx NAND flash

This is another chip used in newer Surfans F20 units. Like the Winbond chip, it's a 1-gigabit chip with on-die ECC. Notably it has an expanded 128-byte OOB area that is only accessible when on-die ECC is disabled.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
Aidan MacDonald
17th Sep 14:14 e64b0e81ad: x1000: add support for the W25N01GVxx NAND flash

This chip is apparently used in some Surfans F20 units, and has the same geometry as the ATO25D1GA. It has an on-die ECC engine.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
17th Sep 14:14 17443de221: x1000: refactor NAND chip identification

Decouple chip IDs from chips, and allow the chip ID table to list which read ID method should be used. Use a safe controller setup during identification instead of using the first chip's parameters.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
17th Sep 13:01 189dee08ea: rockboxdev.sh: Mention older NWZ for the arm toolchain.

The description for arm-linux mentions "Linux-based Sony NWZ", which is misleading for people who aren't very familiar with the various targets and history. People setting up toolchains for the first time for their "traditional" NWZ will overlook the "linux" part (or not understand what it means) and build the wrong compiler.

Mentioning "older Sony NWZ" may of course not immediately tell those people which one to pick, but at least they'll know they need to look things up.
tools/rockboxdev.sh [diff]
Frank Gevaerts
21st Aug 13:36 3f3b738e06: Partial fix for FS #12702: playlist catalogue silently fails to save files
apps/playlist_catalog.c [diff]
Christian Soffke
19th Aug 04:31 a6e9ecb086: Updated keymaps for Sansa Connect

* added scroll wheel to doom
* added scroll wheel to brickmania
* changed spacerocks to use scroll wheel instead of buttons
apps/plugins/brickmania.c [diff]
apps/plugins/doom/i_video.c [diff]
apps/plugins/spacerocks.c [diff]
Benjamin Brown
19th Aug 04:29 c1c0318c8d: Playlist Viewer: Fix unintentional fallthrough
apps/playlist_viewer.c [diff]
Christian Soffke
19th Aug 04:28 5e757b4d6e: Playlists: Fix losing cached control data when resuming

Shuffle and Unshuffle commands are not flushed to disk when control data is updated. The same applies to Delete and Reset commands, unless HAVE_DIRCACHE is undefined (see update_control() function in playlist.c)

playlist_resume() discards cached control data.

This resulted in a bug where (e.g.) removed tracks from the current playlist would reappear if you stopped and resumed playing immediately afterwards (instead of restarting in between).
apps/playlist.c [diff]
Christian Soffke
19th Aug 04:27 8f6d0efd71: tagtree: Delay showing search progress when ramcache is enabled

The disk doesn't need to spin up when the database is in RAM. Results are usually returned without any noticeable delay, so the splash only creates distraction.
apps/tagcache.c [diff]
apps/tagtree.c [diff]
Christian Soffke
16th Aug 11:19 cf37676fb1: pictureflow: fix FS #13360 softlock cannot be disabled
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
16th Aug 11:18 7a3d829543: pictureflow: fix stack overflow

I noticed a stack overflow on the Fiio M3K when launching PictureFlow from the Playlist Viewer after opening a playlist from the file browser using the context menu's "View" option.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
5th Aug 18:05 d4917888e3: Fix yellow introduced in cef9fa22ef11511f6d174b1e92f3350e514ef7d7

(Wrap new function in HAVE_HOTKEY)
apps/playlist_viewer.c [diff]
Solomon Peachy
5th Aug 15:39 cef9fa22ef: playlist viewer: enable hotkey

'File Browser' hotkeys can now be used while browsing a playlist.

The manual has been updated to reflect this and to say that the File Browser hotkey works in the context of the database as well (existing behavior)
apps/playlist_viewer.c [diff]
manual/rockbox_interface/hotkeys.tex [diff]
Christian Soffke
5th Aug 15:39 3edf3ba18d: add hotkeys for properties and pictureflow
apps/onplay.c [diff]
apps/onplay.h [diff]
apps/settings_list.c [diff]
manual/appendix/config_file_options.tex [diff]
Christian Soffke
5th Aug 15:39 7727486423: playlist viewer: add menu option to show songs in pictureflow

(The playlist viewer has to be re-initialized after returning from PictureFlow, since they both use the plugin buffer)
apps/playlist_viewer.c [diff]
Christian Soffke
4th Aug 18:40 f0a05e0993: Properties plugin: Fix crash when parameter is zero-length string

This seems to be what is provided by the database when length of path+file name of an entry is larger than MAX_PATH.
apps/plugins/properties.c [diff]
Christian Soffke
21st Jul 10:39 4101aeac54: x1000: simplify NAND command macros

There is actually no need to parameterize most commands with row or column cycles, usually the opcode and row/column address width are linked. When this is not the case we can use raw SFC commands or define new macros.
bootloader/x1000/utils.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
21st Jul 10:39 9ab5d311cb: x1000: move NAND commands to chip data

Using predefined commands is too inflexible so allow the chip data to specify I/O commands directly.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
19th Jul 12:43 2fce0a98f8: x1000: add flash ONFI info dumper to bootloader

Dumps parts of the standard ONFI info located at page 0x01 of the OTP area to a file for easy copy'n'pasting.
bootloader/x1000/recovery.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
19th Jul 12:15 c72f9c6d0f: x1000: add NAND OTP access switch

Provide a way to toggle the OTP bit for reading OTP pages, mostly useful for debug purposes.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
19th Jul 12:15 45e2d5d641: x1000: check for ECC failures in bootloader uimage reader

Update the uimage reader's bad block handling to treat an ECC uncorrectable error on the first page of the block as a bad block.
bootloader/x1000/utils.c [diff]
Aidan MacDonald
12th Jul 05:01 5901ac8756: ipod6g: increase plugin buffer size from 512 KiB to 2 MiB

The iPod classic/6G comes with 64MB of RAM. This brings it in line with the plugin buffer size of some other targets that have the same amount of RAM, such as the Fiio M3K, and enables the use of PictureFlow for users with very large databases.
firmware/export/config/ipod6g.h [diff]
Christian Soffke
12th Jul 05:00 23fea5dfa8: manual: add 'autoupdate bookmarks' to config file options

(from db1b823)
manual/appendix/config_file_options.tex [diff]
Christian Soffke
11th Jul 23:35 840fb4d47b: doom: Fix a potential buffer trashing in the doom plugin

(caught by GCC12's -Waddress)
apps/plugins/doom/d_deh.c [diff]
Solomon Peachy
11th Jul 23:32 632af4837e: xworld: Fix a really old bug that effectively disabled fast movement

(Thank GCC12's -Waddress for catching this)
apps/plugins/xworld/engine.c [diff]
Solomon Peachy
11th Jul 20:11 05149cd4dc: Fix a couple of warnings uncovered by GCC12
apps/menus/main_menu.c [diff]
lib/rbcodec/codecs/libgme/blip_buffer.c [diff]
Solomon Peachy
11th Jul 19:00 4917f764bb: rbutil: Try to use system-wide QuaZIP in preference to building our own

QuaZIP is included in several major Linux distributions and packaging policies strongly oppose bundling of libraries.
docs/CREDITS [diff]
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/base/ziputil.cpp [diff]
utils/rbutilqt/base/ziputil.h [diff]
James Le Cuirot
10th Jul 14:58 db2817eb1a: Fix red in commit 131566b8f8

Use per-function sections to avoid linking in x1000_boot_linux() on normal builds, which prevents link errors due to referencing a non-existent usb_close().
firmware/target/mips/ingenic_x1000/boot-x1000.h [diff]
Aidan MacDonald
10th Jul 14:22 47cbeb2e67: x1000: add support for simple on-die ECC with NAND flash

Many SPI NAND flash chips have on-die ECC engines that report ECC status via the status feature register. This code handles the common case where ECC status is reported with 2 bits: one bit to indicate if flips were detected & corrected, and another bit to indicate an uncorrectable error.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
10th Jul 14:22 df29c7991a: x1000: add setup_chip hook for NAND chips

Add a chip setup hook for configuring vendor specific registers after the chip is identified.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
10th Jul 14:22 ad8ace53e5: x1000: remove 'typedef struct' from NAND driver

Using 'typedef struct' is not in line with the project coding style and somewhat problematic, so get rid of it here.
bootloader/x1000/utils.c [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
firmware/target/mips/ingenic_x1000/installer-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
firmware/target/mips/ingenic_x1000/spl-nand-x1000.c [diff]
Aidan MacDonald
10th Jul 14:22 cc017f211a: x1000: support 2nd device ID byte for NAND flash

Some components have additional ID bytes. Add support for an optional 2nd device ID byte during the identification routine.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
10th Jul 13:48 131566b8f8: x1000: fix linux boot USB issues

If the USB controller is active when we hand over to Linux it'll often trigger "irq nobody cared" warnings. Disabling the controller before boot prevents that.

Also move the USB PHY bit workaround from the dualboot cleanup hook to the main Linux boot function. Mainline kernels don't clear these bits either.
firmware/export/config.h [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
Aidan MacDonald
10th Jul 13:48 d0d13baf3e: x1000: fix command line passing for linux boot
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
Aidan MacDonald
26th Jun 16:19 ec9e484f64: firmware: Add load/store with endianness functions

Define common functions for loading 16/32/64-bit unsigned integers with big, little, or host endianness, and distinguishing unaligned and aligned cases.

Unaligned loads are supported generically by default, but this can be overridden with a more efficient implementation on architectures which support unaligned loads natively.
firmware/include/rbendian.h [diff]
Aidan MacDonald
22nd Jun 03:49 c3e75a1ce7: Reset settings on button hold fix lang for non supported ipods
apps/lang/english.lang [diff]
William Wilgus
22nd Jun 02:43 8283752223: Reset settings on button hold

extend this properly to the gigabeast and iriver updated manual entries
apps/features.txt [diff]
apps/lang/english.lang [diff]
apps/main.c [diff]
apps/menus/settings_menu.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/configure_rockbox/startup_shutdown_options.tex [diff]
William Wilgus
22nd Jun 02:22 e75e07e1b6: plugin sliding puzzle fix unneeded check
apps/plugins/sliding_puzzle.c [diff]
William Wilgus
22nd Jun 02:05 e1c5a3e296: fix uninitialized warning in libopus

likely this is truly a bug but I imagine much worse things happen before this point in that case
lib/rbcodec/codecs/libopus/silk/NLSF2A.c [diff]
William Wilgus
22nd Jun 00:56 75f618ea62: Rb Manual Fix missing bracket

Fix missing bracket from 7e0492444c38f2ed350016be15b6a4d8ba489bcd g#4568
manual/configure_rockbox/system_options.tex [diff]
William Wilgus
21st Jun 22:11 7e0492444c: usb: remove "Ask" USB Mode (FS #13317)

USB ask mode is basically a footgun: it can't work on native targets and doesn't work reliably on hosted ones, and it continually produces a slow trickle of problems. FS #13317 gives a rundown of the issues. Removing the setting seems like the best solution for now, since a fix would be pretty involved.

This partially reverts 60f581e8f5. The USB Mode setting is left in place so the option can be added back later in a non-buggy way.
apps/settings_list.c [diff]
firmware/export/usb.h [diff]
firmware/usb.c [diff]
manual/configure_rockbox/system_options.tex [diff]
manual/rockbox_interface/main.tex [diff]
Aidan MacDonald
21st Jun 00:16 6cdd142d5c: Setting reset fix red
apps/main.c [diff]
William Wilgus
20th Jun 22:57 ed37c2e894: FS #13193 - Add option to disable settings reset on startup

Updated version of the patch originally by user cockroach

UNTESTED Ipods?, Iriver H10, I do not own these players so YMMV

https://www.rockbox.org/tracker/task/13193
apps/features.txt [diff]
apps/lang/english.lang [diff]
apps/main.c [diff]
apps/menus/settings_menu.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/startup_shutdown_options.tex [diff]
William Wilgus
13th Jun 13:16 58bf7c7e6f: Update english-us "translation"
apps/lang/english-us.lang [diff]
Solomon Peachy
12th Jun 21:12 7d5aeeecf1: FS13343: Updated Serbian translation (Ivan Pesic)
apps/lang/srpski.lang [diff]
Solomon Peachy
12th Jun 21:12 6a707cd913: FS13346: Updated Slovak translation (Matej Golian)
apps/lang/slovak.lang [diff]
Solomon Peachy
12th Jun 21:10 595a34640b: FS13345: Updated Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
12th Jun 21:09 7296f30490: jz4760: Reformat USB driver a little. Prep work for later changes.
firmware/target/mips/ingenic_jz47xx/usb-jz4760.c [diff]
Solomon Peachy
12th Jun 14:01 b9e7075837: Rockbox Utility: updated Czech translation

translated missing strings and revised existing
utils/rbutilqt/lang/rbutil_cs.ts [diff]
Pavel Rzehák
30th May 13:08 4d01168b9b: x1000: add flash probe tool to bootloader

The flash probe mimics the boot ROM's flash read routines and dumps the manufacturer & device IDs and 16-byte parameter data to a file on the SD card.
bootloader/x1000/recovery.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
30th May 13:02 e05aa27124: x1000: move NAND commands to header file
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
28th May 10:23 1d39261338: lastfm_scrobbler Add settings WIP

add settings to the scrobbler plugin Start Playback -- resume playback at plugin start
(while enabled if nothing to resume will bring you back to scrobbler menu) Save Threshold 0-100% -- when this much time has passed the track will be saved and marked (L)istened

Verbose -- Supress messages such as 'Scrobbler Started' and 'Scrobbler Flushed'

run the plugin a second time to bring up the menu if you have resume playback enabled and there is nothing to resume it brings you back to the scrobbler menu as well
apps/plugins/lastfm_scrobbler.c [diff]
William Wilgus
28th May 10:23 7345666d9c: plugins: use menu for lastfm scrobbler TSR exit callback

Use standard menus and yes/no screen for the TSR exit callback, similar to the recently added test_usb plugin. This removes the need to define key bindings and it provides a more consistent user experience.

It also allows the "flush cache" message to be popped up in the main thread - doing it from the worker thread is unreliable and the message often disappeared because the main thread did a UI update immediately after leaving the plugin.

One issue is that quitting the plugin by selecting the scrobbler plugin itself immediately restarts the scrobbler. This is because there is currently no way for TSR plugins to terminate themselves either through the exit_tsr callback or otherwise.
apps/plugins/lastfm_scrobbler.c [diff]
Aidan MacDonald
22nd May 14:34 85232fadbb: simulator: fix off by one error in USB ack calculations

The sim's printout of the number of expected USB acks was off by one. Since the sim queue is not registered for broadcasts, it will not receive an ack message and does not need to account for itself when determining the number of acks to expect, unlike the USB code.
uisimulator/common/sim_tasks.c [diff]
Aidan MacDonald
22nd May 11:16 5ee9a45126: mips: stop backtraces at main()

Initialize ra=0 before calling main so backtraces don't walk through the startup code.
firmware/target/mips/ingenic_jz47xx/crt0.S [diff]
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
22nd May 11:16 981e972839: mips: add native backtrace implementation

Should make debugging crashes on native MIPS targets far easier. This is by no means a 100% complete or robust implementation but it seems to handle the vast majority of functions.
firmware/export/backtrace.h [diff]
firmware/export/system.h [diff]
firmware/panic.c [diff]
lib/mipsunwinder/SOURCES [new]
lib/mipsunwinder/backtrace-mips32.c [new]
lib/mipsunwinder/backtrace-mipsunwinder.h [new]
lib/mipsunwinder/init_context_32.S [new]
lib/mipsunwinder/mipsunwinder.make [new]
tools/root.make [diff]
Aidan MacDonald
22nd May 10:55 cade488b08: pictureflow: Fix 'Update Cache' function and update manual

The artwork cache was previously always rebuilt, even if you had selected the option to update.

"Preparing artwork" should be much quicker now after a database update.
apps/plugins/pictureflow/pictureflow.c [diff]
manual/plugins/pictureflow.tex [diff]
Christian Soffke
22nd May 10:55 b357585852: pictureflow: Fix slide_index bound

Parameters for fbound were in the wrong order and slide_frame wasn't assigned the bounded value
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
22nd May 10:55 5146c3043f: pictureflow: Fix concurrency issues building art cache

Guards against possible image corruption
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
21st May 13:58 c116db6065: plugins: add USB TSR test plugin

This is intended for testing USB event delivery to TSR plugins. Usage:

1. enter plugin -> select Start 2. plug and unplug USB 3. reenter plugin -> select Status it should display "State: disconnected" then "Prev: connected" 4. when done -> select Stop Plugin
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/test_usb.c [new]
Aidan MacDonald
15th May 14:23 2f71571c0a: Fix faulty Play Shuffled behavior (FS #13347)

When replacing a dynamic playlist with Play Shuffled, the current track could incorrectly be left at the end of the new playlist. Fix this - the current track should always be at the beginning, so it can be skipped past regardless of the repeat/shuffle mode.
apps/onplay.c [diff]
Aidan MacDonald
14th May 15:29 2315266628: kernel: remove unused function mutex_test()

No longer needed since the only user was in the Archos code.
firmware/kernel/include/mutex.h [diff]
Aidan MacDonald
14th May 15:29 dafc8e5904: kernel: remove unused kernel/pthread/*.c files

These don't seem usable and it looks like the files were added by accident by d66346789c "buflib: Check the validity of of handles passed to buflib_get_data() in DEBUG builds."
firmware/kernel/pthread/corelock.c [deleted]
firmware/kernel/pthread/mutex.c [deleted]
firmware/kernel/pthread/thread.c [deleted]
Aidan MacDonald
14th May 15:05 d20071def0: apps: Add "keep current track when replacing playlist" setting

Add a setting that makes Play and Play Shuffled in the playlist context menu leave the current song (if any) playing when they replace the playlist. Default to on, since this was the behavior of the old "Clear List & Play Next" option.
apps/lang/english.lang [diff]
apps/menus/playlist_menu.c [diff]
apps/onplay.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/configure_rockbox/playlist_options.tex [diff]
manual/working_with_playlists/main.tex [diff]
Aidan MacDonald
14th May 15:05 70087fb9f3: apps: Change playlist context menu behavior, fix FS #13336

Rename the "Clear List & Play" options to simply Play and Play Shuffled, and change their behavior slightly. Previously they would leave the current song playing, but now they will start playing the first song of the new playlist immediately.

Shuffle options are now consistently hidden whenever a single file is selected.

Fixes FS #13336 -- Play Shuffled is now always displayed where applicable, regardless of playback state.
apps/lang/english.lang [diff]
apps/onplay.c [diff]
manual/working_with_playlists/main.tex [diff]
Aidan MacDonald
9th May 14:36 7363d65f10: manual: Fix up some issues to try and get texlive2021 working ok.
docs/CREDITS [diff]
manual/platform/keymap-xduoox3.tex [diff]
manual/plugins/pictureflow.tex [diff]
manual/plugins/text_viewer.tex [diff]
manual/preamble.tex [diff]
Solomon Peachy
9th May 13:44 f3358eb20a: Properties plugin: Eliminate redundant Track Info code

When opening an audio file from the file browser or database using the Properties plugin, it will now use existing code from the Show Track Info screen for displaying metadata. The menu option has been renamed accordingly.
apps/lang/english.lang [diff]
apps/onplay.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/properties.c [diff]
apps/screens.c [diff]
Christian Soffke
7th May 15:28 4b293285ea: pictureflow: fix album index alignment in load_album_index
apps/plugins/pictureflow/pictureflow.c [diff]
Aidan MacDonald
7th May 14:52 f661dc596e: pictureflow: fix bug in calculation of album art buf size

I intended to check for enough space in buffer but this isn't really doing it and it is making aa_bufsz slightly too big so it's a possible buffer overflow.

Restore the old ALIGN_DOWN(..., 4) rounding in case it's important, if not, then no harm done.
apps/plugins/pictureflow/pictureflow.c [diff]
Aidan MacDonald
5th May 04:31 2c4480979f: tdspeed.c remove buffer name strings

get rid of the magic buffer size and the whole name buffer naming the buffers individually doesn't serve any real purpose instead add a static string for all td buffers
apps/rbcodec_helpers.c [diff]
William Wilgus
4th May 03:58 09ef94ed8b: add const to const * strings iriver Fix Red

the iriver devices overwrite the pointer
apps/recorder/recording.c [diff]
William Wilgus
4th May 03:00 79864c6ec2: add const to const * strings

I don't think this will amke any difference except maybe for hosted ports
apps/gui/skin_engine/skin_parser.c [diff]
apps/misc.c [diff]
apps/recorder/albumart.c [diff]
apps/recorder/recording.c [diff]
apps/shortcuts.c [diff]
apps/tagcache.c [diff]
firmware/target/arm/imx233/debug-imx233.c [diff]
firmware/target/arm/s5l8700/debug-s5l8700.c [diff]
firmware/target/arm/s5l8702/debug-s5l8702.c [diff]
firmware/target/hosted/ibasso/pcm-ibasso.c [diff]
firmware/target/hosted/ibasso/sysfs-ibasso.c [diff]
firmware/target/hosted/usb-hiby.c [diff]
lib/rbcodec/dsp/tdspeed.c [diff]
lib/rbcodec/dsp/tdspeed.h [diff]
William Wilgus
2nd May 16:16 4dd3c2b33e: codecs: m4a: improve seek accuracy

Seeking doesn't work well in M4A files with very few chunks due to the seek method used (chunk based using the info in the 'stco' atom). According to libm4a/demux.c the expected seek resolution using this method is 1/4 to 1/2 seconds. However, ffmpeg generates files with a 1 megabyte chunk size, so the resolution is much worse than expected on some files: around 30-40 seconds at 256kbps.

There was a bug with the seek position reported back to Rockbox: the codec pretended it could seek exactly to the requested sample, but it would only seek to the start of a chunk. This could leave the UI in a confusing state because the real playback position was different from what the elapsed time showed. Fix this by recalculating the reported sample position using the chunk start.

To fix the low seek accuracy, use the table in the 'stsz' atom to skip individual packets within a chunk. This is very accurate, but it takes a lot of RAM to allocate the table. Currently the table is not allowed to use more than half of the codec RAM, which should suffice for short files on most targets. On files where the table is too large the codec will fall back to the less accurate chunk-based seek method.
lib/rbcodec/codecs/libm4a/demux.c [diff]
lib/rbcodec/codecs/libm4a/m4a.c [diff]
lib/rbcodec/codecs/libm4a/m4a.h [diff]
Aidan MacDonald
2nd May 15:48 b79eefc858: apps: fix tagtree arithmetic on null pointers

It was possible for the tag tree's buflib move callback to turn a null pointer non-null. The tagcache_search_clause->str can be null for OR clauses. Also ensure that clauses are zeroed on allocation to ensure garbage pointers don't creep in.
apps/tagtree.c [diff]
Aidan MacDonald
2nd May 15:42 6e37b31851: apps: fix use of negative fd in open_plugin.c

Bug reported by UBSan.
apps/open_plugin.c [diff]
Aidan MacDonald
2nd May 15:34 dadfbfc6a5: apps: fix close of negative fd in talk.c

Bug reported by UBSan.
apps/talk.c [diff]
Aidan MacDonald
2nd May 15:10 e5e457b526: apps: fix int/long mismatch in playlist.c

A couple of places use sizeof(int) for allocations and copying but the indices are longs, which causes bugs in the simulator on 64-bit.
apps/playlist.c [diff]
Aidan MacDonald
2nd May 14:38 6b8c94a6e3: Fix some non-portable alignment values

UBSan reports an avalanche of unaligned pointer bugs stemming from hardcoded 4-byte alignments used in certain places. Use sizeof(long) instead to align to the machine word size.
apps/gui/skin_engine/skin_parser.c [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/recorder/jpeg_load.c [diff]
apps/tagcache.c [diff]
lib/skin_parser/skin_buffer.c [diff]
Aidan MacDonald
2nd May 14:38 366f00a3d3: plugins: fix out of bounds read in chopper

GCC complains about this when compiling with UBSan.
apps/plugins/chopper.c [diff]
Aidan MacDonald
28th Apr 22:56 ab71b9e334: tree.c update settings when new theme selected
apps/tree.c [diff]
William Wilgus
28th Apr 01:40 f0d3a62d91: keyboard.c change math for editline above picker
apps/recorder/keyboard.c [diff]
William Wilgus
20th Apr 20:51 9e93796407: buffering: remove bufgettail/bufcuttail

These operations can only be used in limited circumstances and have exactly one user. bufgettail especially seems of dubious value; how often do you need to read N bytes from the end of a file without changing the file position?

strip_tags() was the only function using them, to strip off ID3v1 and APE tags off the end of buffered tracks. This would save only 32-192 bytes per track -- if the container format uses APE/ID3v1. It hardly seems worth the effort.
apps/buffering.c [diff]
apps/buffering.h [diff]
apps/playback.c [diff]
docs/PLUGIN_API [diff]
lib/rbcodec/metadata/metadata.c [diff]
lib/rbcodec/metadata/metadata.h [diff]
Aidan MacDonald
20th Apr 02:27 931d616071: Manual: Add Eros Q Native Bootloader download link

Forgot this in the previous patchset
manual/getting_started/jztool_install.tex [diff]
Dana Conrad
19th Apr 03:08 002575dbcf: [BUGFIX] gui_synclist move global display settings to list struct

forgot to add the update function to the list_wraparound callback
apps/menus/display_menu.c [diff]
William Wilgus
19th Apr 02:28 1c3f6e063a: fiiom3k Yes/No screen: Only accept Play button for YES

According to the on screen instructions, any other button should mean No.

More importantly, in my experience at least, the Select
"button", since it is touch-activated, can sometimes be pressed by accident, especially when a warning screen is displayed as a result of pressing that same button.
apps/keymaps/keymap-fiiom3k.c [diff]
Christian Soffke
18th Apr 19:02 f8d54d0d1e: rbutil: Bump to 1.5.1.
utils/rbutilqt/Info.plist [diff]
utils/rbutilqt/version.h [diff]
Dominik Riebeling
18th Apr 17:35 3ed515872c: rbutil: Fix progress dialog abort changed too early.

Don't change the abort button to Ok after a successful bootloader install, this will be done by the following steps.
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
Dominik Riebeling
18th Apr 17:35 80ac6893c0: rbutil: Update changelog.
utils/rbutilqt/changelog.txt [diff]
Dominik Riebeling
18th Apr 17:35 e4cb1615f4: rbutil: run lupdate on all translations.
utils/rbutilqt/lang/rbutil_cs.ts [diff]
utils/rbutilqt/lang/rbutil_de.ts [diff]
utils/rbutilqt/lang/rbutil_fr.ts [diff]
utils/rbutilqt/lang/rbutil_gr.ts [diff]
utils/rbutilqt/lang/rbutil_he.ts [diff]
utils/rbutilqt/lang/rbutil_it.ts [diff]
utils/rbutilqt/lang/rbutil_ja.ts [diff]
utils/rbutilqt/lang/rbutil_nl.ts [diff]
utils/rbutilqt/lang/rbutil_pl.ts [diff]
utils/rbutilqt/lang/rbutil_pt.ts [diff]
utils/rbutilqt/lang/rbutil_pt_BR.ts [diff]
utils/rbutilqt/lang/rbutil_ru.ts [diff]
utils/rbutilqt/lang/rbutil_tr.ts [diff]
utils/rbutilqt/lang/rbutil_zh_TW.ts [diff]
Dominik Riebeling
18th Apr 17:35 e2dc0a2c07: rbutil: Make zip install log less noisy.

No need to show a separate entry when a cached file has been used, do it the same way as bootloader downloads do.
utils/rbutilqt/base/zipinstaller.cpp [diff]
Dominik Riebeling
18th Apr 17:35 1155851ffb: rbutil: Make "Info" tab more responsive.

Loading the information can take a bit depending on the speed of the disk. To make the application not appear as frozen update the UI more often, and display a "Loading" text during data retrieval.
utils/rbutilqt/gui/infowidget.cpp [diff]
Dominik Riebeling
18th Apr 14:58 e71a441762: ImageViewer: Fix buffer overflow

np_file is a buffer of size MAX_PATH. After removing only the file name component and leaving the rest of the path, the available space may not be sufficient for appending another file name (possibly of size MAX_PATH itself) to it.

This can occur after a file of acceptable length is opened in ImageViewer, and you then advance to another file whose path
(including the file name) is longer than MAX_PATH.
apps/plugins/imageviewer/imageviewer.c [diff]
Christian Soffke
18th Apr 14:48 1c66e97522: Database: Remove File View menu

These options don't seem to apply to the database...
apps/menus/settings_menu.c [diff]
apps/onplay.c [diff]
apps/onplay.h [diff]
Christian Soffke
18th Apr 13:54 a234df30df: Fix sim build for glibc >=2.34
firmware/asm/thread.h [diff]
Aidan MacDonald
18th Apr 13:13 4d7327b04d: Album Art: Eliminate redundant check

When the 'Album Art' setting was set to
'Prefer Image File' and neither image file nor embedded artwork were found, playback would check for files twice.
apps/playback.c [diff]
Christian Soffke
18th Apr 13:09 b02123d349: Manual: Add Eros Q Native

Here is the PDF this patchset produces: https://www.dropbox.com/s/v1uz8p2fsgsz1ng/rockbox-erosqnative-923dabb5cd-220409.pdf?dl=0
manual/configure_rockbox/bookmarking.tex [diff]
manual/configure_rockbox/sound_settings.tex [diff]
manual/configure_rockbox/system_options.tex [diff]
manual/getting_started/installation.tex [diff]
manual/getting_started/jztool_install.tex [diff]
manual/main_menu/main.tex [diff]
manual/platform/erosqnative.tex [new]
manual/platform/keymap-erosqnative.tex [new]
manual/rockbox_interface/browsing_and_playing.tex [diff]
manual/rockbox_interface/main.tex [diff]
manual/rockbox_interface/wps.tex [diff]
Dana Conrad
18th Apr 13:07 dc67d821c3: toolchain: update zlib to 1.2.12 for native mips targets

zlib has been updated to 1.2.12 on March 27, 2022 with the following note:

Due to the bug fixes, any installations of 1.2.11 should be replaced with 1.2.12.

The previous version has been removed and is no longer available for download on the official site.
tools/rockboxdev.sh [diff]
Bernd Busse
17th Apr 21:21 fc38cd8215: rbutil: Fix uninstall not updating install log.
utils/rbutilqt/base/uninstall.cpp [diff]
Dominik Riebeling
17th Apr 21:21 37a60d5461: rbutil: Enable themes install depending on theme selection.

Don't store the "Install Themes" option. Automatically enable themes installation if the themes selection has at least one entry selected instead.
utils/rbutilqt/base/rbsettings.cpp [diff]
utils/rbutilqt/base/rbsettings.h [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.h [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
utils/rbutilqt/themesinstallwindow.h [diff]
Dominik Riebeling
17th Apr 21:21 62108a9613: rbutil: Use references to avoid creating temporary objects.

Get rid of some unnecessary object creating / copying by using references.
utils/rbutilqt/base/ttsbase.h [diff]
utils/rbutilqt/base/ttscarbon.cpp [diff]
utils/rbutilqt/base/ttscarbon.h [diff]
utils/rbutilqt/base/ttsexes.cpp [diff]
utils/rbutilqt/base/ttsexes.h [diff]
utils/rbutilqt/base/ttsfestival.cpp [diff]
utils/rbutilqt/base/ttsfestival.h [diff]
utils/rbutilqt/base/ttssapi.cpp [diff]
utils/rbutilqt/base/ttssapi.h [diff]
utils/rbutilqt/base/uninstall.cpp [diff]
utils/rbutilqt/base/utils.cpp [diff]
utils/rbutilqt/base/voicefile.cpp [diff]
utils/rbutilqt/base/zipinstaller.h [diff]
utils/rbutilqt/test/stubs/stubs-talkgenerator.cpp [diff]
Dominik Riebeling
17th Apr 21:21 8c55ce62b9: rbutil: Move bootloader file check to base class.

Avoid constructing the bootloader file path in the caller. Pass filename list and mountpoint separately so it can directly fall back to the mountpoint.

Change some functions to use references instead of creating temporary objects.
utils/rbutilqt/base/bootloaderinstallbase.cpp [diff]
utils/rbutilqt/base/bootloaderinstallbase.h [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
Dominik Riebeling
17th Apr 16:21 1af92e5ff8: Fix red from 6f5af8e53c
apps/lang/arabic.lang [diff]
apps/lang/basque.lang [diff]
apps/lang/bulgarian.lang [diff]
apps/lang/catala.lang [diff]
apps/lang/chinese-simp.lang [diff]
apps/lang/chinese-trad.lang [diff]
apps/lang/czech.lang [diff]
apps/lang/dansk.lang [diff]
apps/lang/deutsch.lang [diff]
apps/lang/english-us.lang [diff]
apps/lang/english.lang [diff]
apps/lang/espanol.lang [diff]
apps/lang/finnish.lang [diff]
apps/lang/francais.lang [diff]
apps/lang/galego.lang [diff]
apps/lang/greek.lang [diff]
apps/lang/hebrew.lang [diff]
apps/lang/hrvatski.lang [diff]
apps/lang/italiano.lang [diff]
apps/lang/japanese.lang [diff]
apps/lang/korean.lang [diff]
apps/lang/latviesu.lang [diff]
apps/lang/lietuviu.lang [diff]
apps/lang/magyar.lang [diff]
apps/lang/nederlands.lang [diff]
apps/lang/norsk-nynorsk.lang [diff]
apps/lang/norsk.lang [diff]
apps/lang/polski.lang [diff]
apps/lang/portugues-brasileiro.lang [diff]
apps/lang/portugues.lang [diff]
...and 15 more files.
Aidan MacDonald
17th Apr 15:37 fca7b8e2ff: Fix undefined behavior that blocks compiling with UBSan

Left shifts are not defined in C if they would cause signed overflow, so these expressions get instrumented, which makes them unusable as switch values and triggers compile errors when compiling with UBSan.
firmware/kernel/include/queue.h [diff]
lib/rbcodec/metadata/metadata_common.h [diff]
Aidan MacDonald
17th Apr 15:37 c6df8cc4f7: configure: Add support for compiling the simulator with UBSan

By passing --with-ubsan to tools/configure, you can now build the simulator with UBSan to catch undefined behavior at runtime.
tools/configure [diff]
Aidan MacDonald
17th Apr 15:32 6f5af8e53c: Add Codec to Track Info screen
apps/screens.c [diff]
Christian Soffke
17th Apr 14:59 c4156b1909: viewports, set flags to VP_DEFAULT_FLAGS

flags were getting un-initialized memory it really didn't matter with the flags getting initialized anyway But once I added a new flag that didn't explicitly set or clear the flag at init well here we are

set flags to VP_DEFAULT_FLAGS in viewport_set_defaults()

add the flags variable to the default vp's set to 0
(it was already initialized to 0 by bss, make it explicit)
apps/gui/viewport.c [diff]
firmware/drivers/lcd-1bit-vert.c [diff]
firmware/drivers/lcd-2bit-horz.c [diff]
firmware/drivers/lcd-2bit-vert.c [diff]
firmware/drivers/lcd-2bit-vi.c [diff]
firmware/drivers/lcd-color-common.c [diff]
firmware/export/lcd.h [diff]
William Wilgus
17th Apr 14:58 6703f43f5c: Playlist Viewer: Always retrieve track Info from disk

Frequency, file size, and the codec are not stored in the database and thus can’t be displayed in the Playlist Viewer's Track Info screen when metadata is only retrieved from the database.
apps/playlist_viewer.c [diff]
Christian Soffke
16th Apr 15:06 0e8f3669d0: Fix remaining red from 3fcdadce24
apps/plugins/SOURCES [diff]
Aidan MacDonald
16th Apr 14:41 76035decc6: Fix red in 3fcdadce24
apps/plugin.c [diff]
apps/plugin.h [diff]
Aidan MacDonald
16th Apr 14:18 f989339664: Remove dead code
apps/debug_menu.c [diff]
apps/screens.h [diff]
Christian Soffke
16th Apr 14:13 68ac932585: PictureFlow: Disable 'Album Not Found' splash when stopped

...and go to last album, even if it hadn't been selected for playback
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
16th Apr 14:13 e3bf6f08e3: PictureFlow: Delay LCD Update until center slide is loaded

Eliminates flashing of slide right after launch or when changing sorting on the M3K using the volume buttons
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
16th Apr 13:36 3fcdadce24: plugins: Add multiboot select plugin

This plugin provides a menu for easily editing the root redirect file on targets that support multiboot. You can select a new root from a list of Rockbox installations detected on the filesystem or remove all redirects to boot from the default location.

To avoid searching the whole filesystem, only subdirectories of the volume roots are checked for valid installations. Only installations that are compatible with the current player will be displayed.
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/multiboot_select.c [new]
apps/plugins/viewers.config [diff]
Aidan MacDonald
16th Apr 13:36 d55dceff37: apps: Add ability to do a clean reboot

Allow a clean shutdown to end in either power off or reboot. Add a new event SYS_REBOOT to signal it and sys_reboot() to trigger the event. SYS_REBOOT signals a reboot request and should be listened for alongside SYS_POWEROFF events.
apps/iap/iap-core.c [diff]
apps/misc.c [diff]
apps/plugins/battery_bench.c [diff]
apps/plugins/chessbox/chessbox.c [diff]
apps/plugins/lastfm_scrobbler.c [diff]
apps/plugins/lua/rocklib.c [diff]
apps/plugins/mpegplayer/mpeg_misc.c [diff]
apps/plugins/plugin_crt0.c [diff]
apps/plugins/solitaire.c [diff]
apps/recorder/recording.c [diff]
apps/tagcache.c [diff]
firmware/backlight.c [diff]
firmware/export/powermgmt.h [diff]
firmware/kernel/include/queue.h [diff]
firmware/powermgmt.c [diff]
Aidan MacDonald
15th Apr 19:03 90960adf56: rbutil: Fix bootloader installation for various players.

Reworking handling of player specific data (static player configuration, as well as information retrieved from the server) changed the behaviour on a non-present configuration entry. This eventually caused the mountpoint not being set for players that don't have a bootloader file on disk. Fixing this accidentially removed the default-if-not-found handling for the bootloader file.

Restore the old default value behaviour for both cases.
utils/rbutilqt/base/bootloaderinstallbase.cpp [diff]
utils/rbutilqt/base/playerbuildinfo.cpp [diff]
Dominik Riebeling
15th Apr 12:16 ff08841ea9: viewport FIX RED remote screens
firmware/drivers/lcd-bitmap-common.c [diff]
William Wilgus
15th Apr 05:54 d56d96031c: viewports add flag to disable updates

when drwing multiple areas of the screen with other gui elements you might want to combine updates into a single screen redraw
firmware/drivers/lcd-bitmap-common.c [diff]
firmware/export/lcd.h [diff]
William Wilgus
14th Apr 21:06 b9c3ab2e04: rbutil: Improve progress & responsiveness on (un)install.

- When uninstalling update the log file only at the end of removing all files. This gives a major speed improveness since othewise the log file is written after each file. This slows down things notably, especially on slow disks.
- Explicitly update the UI during install zip extraction. Avoids progress seemingly hanging due to the UI not getting updated often enough.
utils/rbutilqt/base/uninstall.cpp [diff]
utils/rbutilqt/base/ziputil.cpp [diff]
Dominik Riebeling
14th Apr 20:37 97176d444e: rbutil: Use progress bar on uninstall.

When uninstalling parts with lots of small files the process can take quite some time. Update the progress accordingly.
utils/rbutilqt/base/uninstall.cpp [diff]
Dominik Riebeling
14th Apr 20:23 6ef094c1a9: rbutil: Make QtMultimedia an optional component.

We only use it for playing the TTS sample so it's not too important. Since this is a separate Qt module it might not be installed, so make it optional.
utils/CMakeLists.txt [diff]
utils/rbutilqt/CMakeLists.txt [diff]
Dominik Riebeling
14th Apr 20:22 8a6ceff376: rbutil: Fix sansapatcher bootloader install on Windows.

During bootloader installation sansapatcher disk access is accidentially set up twice. This is not a problem except on Windows, which will abort with a "permission denied" error.

This is basically the same problem as for ipodpatcher bootloader install.
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
utils/rbutilqt/base/bootloaderinstallsansa.cpp [diff]
utils/sansapatcher/sansaio-posix.c [diff]
utils/sansapatcher/sansaio-win32.c [diff]
Dominik Riebeling
13th Apr 19:36 cc2f364926: rbutil: Fix ipodpatcher bootloader install on Windows.

During bootloader installation ipodpatcher disk access is accidentially set up twice. This is not a problem except on Windows, which will abort with a "permission denied" error.
utils/ipodpatcher/ipodio-posix.c [diff]
utils/ipodpatcher/ipodio-win32.c [diff]
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
Dominik Riebeling
11th Apr 03:59 b9ab75732a: bitmap/list.c fix red
--typo
apps/gui/bitmap/list.c [diff]
William Wilgus
11th Apr 02:24 ddcab156f7: gui_synclist move global display settings to list struct

its really painful needing to override global settings in order to change some aspects of lists

this patch moves:

[scrollbar position, cursor type, talk_menus, keyclick, wrap around, scroll paginated]

to variables within the synclist, it also makes updating after settings changes a necessity

I think I have the static synclists in core covered

(I think the one in gui/list-skinned can be left as is)

this patch allows easy modification these flags on the fly
apps/gui/bitmap/list.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/menus/theme_menu.c [diff]
apps/tree.c [diff]
William Wilgus
9th Apr 22:15 8dbc0914f6: imageviewer: limit progress bar LCD update rate

The progress callback doesn't rate limit LCD updates, which causes excessive slowdowns (up to 150x!) on some targets. Limiting updates to 20fps solves the problem and should boost load speed across the board, particularly for large images and animated GIFs that may run the progress callback thousands of times.
apps/plugins/imageviewer/imageviewer.c [diff]
Aidan MacDonald
9th Apr 14:20 32f1418c5a: buffering: fix buffer overflows with bitmap loading

In some circumstances it was possible for a bitmap to overflow its buffer and overwrite the next handle. The easiest way to trigger it is with a highly compressed JPEG that is decoded to a large bitmap. Because the JPEG file size is used to determine how much to allocate this would cause an obvious buffer overflow when the JPEG is smaller than the decoded bitmap. Fix this by using the decoded bitmap size as the allocation size. Some overhead must be added to deal with JPEGs, but it will be freed once the image is loaded.

A less obvious possibility is the fact that add_handle() will allow a handle to be added even if there's not enough space for the entire allocation. This is generally beneficial because it allows the first part of a file to be loaded while waiting for space to free up, but for bitmaps it is not valid because the whole image is loaded at once. Hence if there is not actually enough space in the buffer, the bitmap load can again overflow the actual free space and overwrite the next handle.

The buffering code supports an H_ALLOCALL flag for allocations that need the free space available immediately, so use it for bitmaps to avoid that bug.

load_image() had a sketchy-looking check for free space which stopped me from triggering the bug with simple tests, but since guessing the free space is obviously a bad idea when the caller *knows* how much free space there really is, remove that guess and let the caller tell load_image() the real deal.
apps/buffering.c [diff]
Aidan MacDonald
9th Apr 14:20 5aa0fc3b00: jpeg: provide a rough estimate of decoder memory overhead

JPEG decoding requires additional space in the bitmap buffer beyond what is needed for the decoded pixel data. Provide a way to estimate how much overhead is needed.

The actual overhead is sizeof(struct jpeg) + decode_buf_size, where the latter depends on the image size and JPEG encoding used. From my testing decode_buf_size is normally pretty small (under 5 KiB) but looking at the code it could be large in some cases, primarily with large images, so 32 KiB seems to be a decent compromise. Someone who knows better about JPEG should pick a better value if that's too big.

Using a constant is obviously not the most accurate but it seems to be the simplest option for retrofitting to existing code.
apps/recorder/jpeg_load.c [diff]
apps/recorder/jpeg_load.h [diff]
Aidan MacDonald
9th Apr 14:20 7718b24401: buffering: fix signed overflow in next_handle_id()

Not sure what the comment is talking about - signed overflow is undefined behavior and we don't use -fwrapv or other flags to make it defined. I can't see how a compiler could abuse it here, but the overflow is nonetheless easily avoided.
apps/buffering.c [diff]
Aidan MacDonald
8th Apr 22:11 bd444ebd0a: BUGFIX keyboard.c make vp alloc static

don't stop playback to alloc viewports for the keyboard For the moment it doesn't make much difference each vp takes about 40 bytes (double that in the sim?) so not the end of the world 120 extra bytes
apps/recorder/keyboard.c [diff]
William Wilgus
8th Apr 15:19 132034346f: Manual: Update PictureFlow

- Update the manual entry for PictureFlow with the latest features and fix keymap

- Strongly suggest enabling the database's
"Load to RAM" feature (in my experience, this can lead to a ~60x speedup when building the album index)

- Suggest enabling the dircache, as it can noticeably improve the loading times for album art.
manual/configure_rockbox/system_options.tex [diff]
manual/plugins/pictureflow.tex [diff]
Christian Soffke
8th Apr 15:19 77717f36e0: Manual: Update fiiom3k keymap
manual/platform/keymap-fiiom3k.tex [diff]
manual/rockbox_interface/wps.tex [diff]
Christian Soffke
8th Apr 00:10 db55d30372: Allow cuesheet index offsets longer than 99 minutes.

While the track number is limited to 99, I know of no documented constraint on the value of offset minutes to 99.

As we are storing the millisecond offset as unsigned long, assuming 32 bit, we can allow 70,000 minutes (2^32 / 60000).

However, I've been unable to generate a test audio file 48 days long under 2GB, so I've set the limit to 30,000 minutes.

In addition, this change reduces the maximum number of seconds to 59, and frames to 74.

I've generated some silent test files with the filenames being cue_[minutes].mp3

http://peskett.co.uk/rockbox/test_cues/
apps/cuesheet.c [diff]
Nick Peskett
7th Apr 23:46 d1be73cfc0: keyboard.c Use viewports, move text box pos

allows items to be moved around with less code changes

remove scrolling I was not overly impressed with it add test_kbd plugin
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/SOURCES.app_build [diff]
apps/plugins/test_kbd.c [new]
apps/recorder/keyboard.c [diff]
William Wilgus
2nd Apr 12:05 bf3e67204c: lastfm_scrobbler check for back to back repeat entries

if you skip a track after the halfway point the scrobbler may double post with slightly different timestamps but the same track info

take a crc of the non-unique part and check against the previously written track
apps/plugins/lastfm_scrobbler.c [diff]
William Wilgus
2nd Apr 11:42 43abe2d820: lastfm_scrobbler check pointers for validity

we need to make sure we don't deref NULL pointers
apps/plugins/lastfm_scrobbler.c [diff]
William Wilgus
1st Apr 16:08 98f762316f: system: update MEM_ALIGN_ATTR for targets with CPU caches

MEM_ALIGN_ATTR should take advantage of cache line alignment on all native CPUs which define it, not just ARM CPUs. (This could arguably be done for hosted targets too, but we don't necessarily know the size of a cache line there.)
firmware/export/system.h [diff]
Aidan MacDonald
1st Apr 16:04 de285741bf: ErosQ Native: Make power delay bootloader-only

gotta go fast
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
Dana Conrad
1st Apr 16:04 7aa2a23b95: Eros Q Native: Add Original Firmware Boot option

Hold "Play" to boot the OF, or boot it from the recovery menu by holding "Vol. Up". If you had the hosted port installed on your player before installing the native port, you'll still have to go through the hosted bootloader.

A couple notes:

- When booting from the menu, the recovery menu disappears, then reappears before going into the OF.

- You need to hold the play button for like a half second after the blue light comes on in order to get into the OF.

The recovery appears to be there, but it doesn't seem to be intended for end users - it just says "Updater V1.1 - Insert TF Pls". I haven't tested it beyond seeing that it boots, so I'm going to comment it out for now.
bootloader/x1000/boot.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
firmware/target/mips/ingenic_x1000/erosqnative/lcd-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/lcd-x1000.h [diff]
Dana Conrad
1st Apr 15:40 5ffe520de4: playlist: use path_strip_last_volume, clarify path conventions

The comment regarding Windows paths was fairly confusing as to its intent. What the code is trying to do is replace the drive letter with the volume containing the playlist, which appears reasonable. The middle of the comment was devoted to explaining why the code below was potentially incorrect which only served to add to the confusion.

AFAICT the last volume specifier in a path will cause search to start from the root of that volume, so any incorrect result can be avoided by using the new function path_strip_last_volume().

Finally, add a comment at the top of the function that explains what it does.
apps/playlist.c [diff]
Aidan MacDonald
1st Apr 15:40 4f05a9d066: Add path_strip_last_volume

This gets the volume that the path eventually refers to by parsing the last volume specifier and returning the part of the path after it (which does not contain any volume specifiers). The initial part of the path therefore contains everything up to and including the last volume specifier.
firmware/common/pathfuncs.c [diff]
firmware/export/pathfuncs.h [diff]
Aidan MacDonald
1st Apr 15:01 ca0c3dee0a: ImageViewer: M3K keymap allow scrolling up/down
apps/plugins/imageviewer/imageviewer.c [diff]
apps/plugins/imageviewer/imageviewer_button.h [diff]
Christian Soffke
1st Apr 10:11 6e3937e836: lastfm Scrobbler: Substitute album artist for empty artist.
apps/plugins/lastfm_scrobbler.c [diff]
James D. Smith
1st Apr 01:40 412dbaeffe: hosted: call 'sync' before poweroff

Might be needed to avoid filesystem corruption with buggy OF kernels.
firmware/target/hosted/system-hosted.c [diff]
Aidan MacDonald
1st Apr 01:33 a9e02b4850: FS13338: Updated Slovak translation (Matej Golian)
apps/lang/slovak.lang [diff]
Solomon Peachy
1st Apr 01:32 f08d083ed0: FS13441: Updated Italian translation (Alessio Lenzi)
apps/lang/italiano.lang [diff]
Solomon Peachy
1st Apr 01:31 cbb5efd525: FS13340: Updated Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
30th Mar 13:05 43830d0128: alarm_menu share setter with settime

share the time picker with the alarm

block the date portion, seconds are ignored
apps/alarm_menu.c [diff]
apps/lang/english.lang [diff]
apps/menus/time_menu.c [diff]
apps/screens.c [diff]
apps/screens.h [diff]
William Wilgus
27th Mar 18:46 4c1fe3a899: rbutil: Bump to 1.5.0.
utils/rbutilqt/Info.plist [diff]
utils/rbutilqt/version.h [diff]
Dominik Riebeling
27th Mar 14:35 7243f6b343: x1000: Add multiboot support

Enables multiboot for the FiiO M3K, Shanling Q1, and Eros Q native port. Note this requires an up-to-date Rockbox _and_ bootloader.

Usage instructions will (eventually) be found on the wiki: https://www.rockbox.org/wiki/MultibootBootloader
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
27th Mar 13:50 bcbb5a8b00: multiboot: Allow searching in volume 0 for redirect file

Searching in volume 0 is necessary for multiboot targets with only one drive, like the M3K/Q1/ErosQ. Without this the search code will never look at the redirect file on these targets.

The search bound is configured with a setting MULTIBOOT_MIN_VOLUME, which defaults to 0, but is defined to 1 for Sansa players so they keep their old behavior.
firmware/common/rb-loader.c [diff]
firmware/export/config.h [diff]
firmware/export/config/sansaclipplus.h [diff]
firmware/export/config/sansaclipzip.h [diff]
firmware/export/config/sansae200.h [diff]
firmware/export/config/sansafuze.h [diff]
firmware/export/config/sansafuzeplus.h [diff]
firmware/export/config/sansafuzev2.h [diff]
Aidan MacDonald
27th Mar 12:51 df3afcfa3b: PictureFlow: Configurable album sorting

Now offers sorting by:

- Album artist, then album name
- Album artist, then album year
- Album year
- Album name

Years are determined by the most recently released track appearing on an album, if the value differs between tracks.

On the M3K, instead of by going into Settings, volume buttons can also be used for quickly adjusting the current sorting
apps/lang/english.lang [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
27th Mar 12:51 aec8b36348: PictureFlow: Prevent queue overflow & simplify locking
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
27th Mar 12:51 ae121de149: PictureFlow: Write bitmaps in one go

Analogous to an earlier change w.r.t. reading bitmaps
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
27th Mar 10:57 a490ff896f: rbutil: Update german translation.
utils/rbutilqt/lang/rbutil_de.ts [diff]
Dominik Riebeling
27th Mar 10:56 493dce212d: rbutil: Fix langstat script.
utils/rbutilqt/langstats.py [diff]
Dominik Riebeling
26th Mar 19:29 aaf0f1c371: rbutil: Fix Qt6 Windows build.

It seems Qt6 doesn't require explicit linking to QSvgIconPlugin anymore, and cmake has trouble finding it. On native Windows builds it isn't required, so remove it.
utils/rbutilqt/CMakeLists.txt [diff]
Dominik Riebeling
26th Mar 19:29 6bc19c98ca: rbutil: Fix implicit type conversion on Windows.
utils/rbutilqt/base/utils.cpp [diff]
Dominik Riebeling
26th Mar 15:12 593d9f623d: lastfm_scrobbler fix yellow for targets w/o storage callback
apps/plugins/lastfm_scrobbler.c [diff]
William Wilgus
26th Mar 13:58 053c1596d8: Last FM scrobbler remove manual entry
manual/configure_rockbox/playback_options.tex [diff]
William Wilgus
26th Mar 07:20 f105ad7b23: lastfm_scrobbler fix red for devices w/o storage callback
apps/plugins/lastfm_scrobbler.c [diff]
William Wilgus
26th Mar 06:50 fd15ea25d3: LastFm remove scrobbler from core make a TSR plugin WIP

remove scrobbler from core make it a plugin
apps/SOURCES [diff]
apps/lang/english.lang [diff]
apps/main.c [diff]
apps/menus/playback_menu.c [diff]
apps/misc.c [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/lastfm_scrobbler.c [new]
apps/scrobbler.c [deleted]
apps/scrobbler.h [deleted]
apps/settings.h [diff]
apps/settings_list.c [diff]
William Wilgus
25th Mar 22:16 8eb4689ab1: add way to lock portion of plugin buffer for TSR plugins

Some things in core that should probably be plugins steal the plugin buffer for their own use, TSR plugins have no way to detect or prevent this lock buffer reserves buffer_size bytes directly after the plugin itself returns the unreserved bytes still available from the plugin buffer
apps/plugin.c [diff]
apps/plugin.h [diff]
William Wilgus
25th Mar 21:36 5d0f697e87: x1000: remove the last vestiges of boot option support

There should be no need for any compatibility hacks since this value was mostly used internally between the SPL and bootloader. clk_init() was the only user in the main Rockbox binary which accessed it, but when loaded by the Rockbox bootloader that code will not be reached since BOOT_FLAG_CLK_INIT is already set.
firmware/target/mips/ingenic_x1000/boot-x1000.h [diff]
firmware/target/mips/ingenic_x1000/clk-x1000.c [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
firmware/target/mips/ingenic_x1000/system-x1000.c [diff]
Aidan MacDonald
25th Mar 21:36 3ae4a98e3b: x1000: spl: remove selectable boot option support

Now the SPL boots the Rockbox bootloader unconditionally, which allows for some simplification.
firmware/SOURCES [diff]
firmware/target/mips/ingenic_x1000/erosqnative/spl-erosqnative.c [deleted]
firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c [deleted]
firmware/target/mips/ingenic_x1000/shanlingq1/spl-shanlingq1.c [deleted]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.h [diff]
Aidan MacDonald
25th Mar 21:36 2810c549a6: x1000: spl: remove dual boot support code

Removes the SPL's dual boot support code, and removes the dual boot selection code on the M3K and Q1 since they can now do it from the main bootloader.
firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/spl-shanlingq1.c [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.h [diff]
Aidan MacDonald
25th Mar 21:36 7cb49cfb33: x1000: spl: split off NAND storage to separate file

Just tidying. No functional changes.
firmware/SOURCES [diff]
firmware/target/mips/ingenic_x1000/spl-nand-x1000.c [new]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
Aidan MacDonald
25th Mar 21:36 bd8cd58568: x1000: bootloader: Add button handlers for OF boot

The SPL soon won't be paying attention to buttons, so the bootloader should check them.
bootloader/x1000/main.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
25th Mar 21:36 cda8bd5437: x1000: bootloader: set touchscreen to button mode

The touchscreen "buttons" are used for screenshots on the Q1.
bootloader/x1000/main.c [diff]
Aidan MacDonald
25th Mar 21:36 6bc69c797c: x1000: bootloader: accept button input during splash

This allows screenshots to be taken while a splash is displayed.
bootloader/x1000/gui.c [diff]
Aidan MacDonald
25th Mar 21:36 3d88f455cf: Fix double define of BL_SCREENSHOT_NAME on fiiom3k
bootloader/x1000/x1000bootloader.h [diff]
Dana Conrad
25th Mar 21:36 5160c90690: x1000: bootloader: add screenshot function

Screenshots of the recovery menu will be useful for documentation.

This can be disabled by turning off HAVE_BOOTLOADER_SCREENDUMP in the target config file if the bootloader should ever run up against max size limits.
bootloader/x1000/gui.c [diff]
bootloader/x1000/recovery.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
Aidan MacDonald
25th Mar 21:31 4cf36dfbf3: x1000: bootloader: skip bad blocks when loading flashed kernels

Bad blocks in a kernel flash partition seem to be handled by skipping ahead to the next block; this is a common bad block management scheme for simple software like bootloaders (and is the default method for reading NAND partitions in u-boot).

Extend the uImage flash reader to skip bad blocks while reading.
bootloader/x1000/utils.c [diff]
Aidan MacDonald
24th Mar 23:40 5b011c8dca: x1000: add bad block marker position to nand_chip info
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.h [diff]
Aidan MacDonald
24th Mar 23:40 9bbe08f3ec: x1000: bootloader: add whole-chip flash dump option

I don't expect this will be all that useful, but why not...
bootloader/x1000/recovery.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 23:40 c3562b6df6: x1000: bootloader: add debug tools menu

Add a debug menu to invoke two new actions, dumping the OF kernel and recovery images from flash to the SD card.
bootloader/x1000/recovery.c [diff]
Aidan MacDonald
24th Mar 23:40 0d21d80ca8: x1000: bootloader: add basic flash dump utility
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 23:40 ee68d9df8e: x1000: bootloader: display uimage load error code
bootloader/x1000/utils.c [diff]
Aidan MacDonald
24th Mar 23:40 fbe9e4ac10: x1000: bootloader: refactor splash/splash2

Allow the use of printf formatting and multiple lines of text using newlines in the string.
bootloader/x1000/boot.c [diff]
bootloader/x1000/gui.c [diff]
bootloader/x1000/install.c [diff]
bootloader/x1000/main.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 23:40 41a8b874d2: linuxboot: add meaningful error codes
firmware/linuxboot.c [diff]
Aidan MacDonald
24th Mar 23:40 f7a341555d: fiiom3k: trim OF kernel arguments to fix boot hangs

The M3K's kernel has an incredibly stupid function that mangles the kernel args and copies them to a 100-byte buffer without any kind of bounds checking. So, if the kernel arguments are more than 99 chars the stack may be corrupted, sometimes crashing the kernel.

Fortunately, most of the arguments the OF uses are useless, and the truly necessary arguments fit within the absurd 99-char limit.
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 23:40 6a6c6083fa: x1000: bootloader: fix Linux self-extracting kernel boot

Basically, there's longstanding bug in Linux with self-extracting kernels on MIPS which just happened to manifest now on the M3K as a hang on boot. The fix is applied to the M3K and Q1 since they both use this type of kernel image.
bootloader/x1000/boot.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
firmware/export/linuxboot.h [diff]
firmware/linuxboot.c [diff]
Aidan MacDonald
24th Mar 23:40 44fbb1a593: x1000: bootloader: add LCD dualboot cleanup for the M3K

Disable LCD interrupts before booting the OF - the OF kernel hangs at boot if they are enabled.
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
Aidan MacDonald
24th Mar 23:40 90cb0b0ae5: x1000: bootloader: add mainline Linux boot option

This adds a *very basic* Linux loader to the Rockbox bootloader, which allows running a mainline Linux kernel using the following file layout on the SD card:

- /uImage
- /linux_cmdline.txt

The command line arguments are listed in linux_cmdline.txt, all lines are concatenated together and whitespace is converted into spaces. Comments aren't supported however.

The loader doesn't support the modern devicetree boot protocol, so it can only pass command line arguments. It would be easy to support an appended dtb though.
bootloader/x1000/boot.c [diff]
bootloader/x1000/recovery.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 23:40 53a92f0ecc: x1000: bootloader: add original firmware boot capability

Adds the ability to boot the OF's player or recovery kernels from the bootloader. Works on Shanling Q1 but broken on the FiiO M3K (kernel hang) so leave it disabled for the M3K.
bootloader/x1000/boot.c [diff]
bootloader/x1000/recovery.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
24th Mar 22:59 9bde653410: firmware: allow screendump in bootloader

Enabled if target defines HAVE_BOOTLOADER_SCREENDUMP
firmware/SOURCES [diff]
firmware/export/config.h [diff]
firmware/export/screendump.h [diff]
Aidan MacDonald
24th Mar 22:59 e956f7dc83: firmware: minor screendump related cleanups

- Remove unused redefinitions of screen_dump() from bootloaders
- Use empty do-while when screendump is compiled out
bootloader/iaudio_coldfire.c [diff]
bootloader/iriver_h1x0.c [diff]
bootloader/iriver_h300.c [diff]
bootloader/mpio_hd200_hd300.c [diff]
firmware/export/screendump.h [diff]
Aidan MacDonald
23rd Mar 19:11 238cd13469: rbutil: Fix build info list handling with Qt6.

With Qt6 we need to check the type differently or we'd convert a stringlist to a string.
utils/rbutilqt/base/playerbuildinfo.cpp [diff]
utils/rbutilqt/test/test-playerbuildinfo.cpp [diff]
Dominik Riebeling
23rd Mar 18:34 f3b19de594: rbutil: Disable TTS test on Qt6.

Qt6 has QMultimedia, but QSound has been removed. It's only use for playing a TTS test sample. Disable that for now.
utils/rbutilqt/configure.cpp [diff]
Dominik Riebeling
23rd Mar 18:34 00ec195c26: rbutil: Qt6 fixes.
utils/CMakeLists.txt [diff]
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/main.cpp [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
Dominik Riebeling
23rd Mar 18:34 948637c42c: rbutil: Fix TalkGenerator string correction.

- Fix regexp case insensitive option being inverted.
- Pass more objects by reference.
- Some const-ness.
utils/rbutilqt/base/talkgenerator.cpp [diff]
utils/rbutilqt/base/talkgenerator.h [diff]
Dominik Riebeling
23rd Mar 18:34 215ba4abf7: rbutil: Remove unnecessary Q_OBJECT.

PlayerBuildInfo uses no signals/slots, so we don't need Q_OBJECT.
utils/rbutilqt/base/playerbuildinfo.h [diff]
Dominik Riebeling
23rd Mar 18:34 1aea2d5b7e: rbutil: Test for talkgenerator string correction.
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/test/stubs/stubs-talkgenerator.cpp [new]
utils/rbutilqt/test/test-talkgenerator.cpp [new]
utils/rbutilqt/test/test-talkgenerator.qrc [new]
Dominik Riebeling
22nd Mar 21:55 822b16b1c6: debug_menu dbg_buffering_thread show more on tiny screens

I think the clipzip has the smallest screen at 96 might need to be enabled for LCD_WIDTH <=128 too

remove scrolling thread info for larger screens
apps/debug_menu.c [diff]
William Wilgus
22nd Mar 20:16 7910f4a7aa: debug_menu cleanup/optimize some common format strings
apps/debug_menu.c [diff]
William Wilgus
22nd Mar 04:22 61bc7b91bc: tagcache.c remove 16-bit compression for add_uniqbuf

apparently there are tags such as year or genre that are indexed 1 byte apart, as much as I like the idea of this I cannot come up with a way to reliably denote 2 16 bit entries from a single 32 bit entry without losing data or adding bookkeeping which would likely make it pointless
apps/tagcache.c [diff]
William Wilgus
22nd Mar 03:53 cfeeb7889d: Lcd save function pointer to frame buffer get_address_fn before loops

Calling multiple levels of indirection in a loop slows things down

Really these need to be rewritten to take a start and end address like most of the rest of the codebase

But this is safer without having test hardware in hand
firmware/drivers/lcd-color-common.c [diff]
firmware/export/lcd.h [diff]
firmware/target/arm/as3525/lcd-ssd1303.c [diff]
firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c [diff]
firmware/target/arm/imx233/creative-zen/lcd-zenmozaic.c [diff]
firmware/target/arm/imx233/creative-zen/lcd-zenv.c [diff]
firmware/target/arm/imx233/creative-zen/lcd-zenxfistyle.c [diff]
firmware/target/arm/imx233/creative-zenxfi2/lcd-zenxfi2.c [diff]
firmware/target/arm/imx233/creative-zenxfi3/lcd-zenxfi3.c [diff]
firmware/target/arm/imx233/sansa-fuzeplus/lcd-fuzeplus.c [diff]
firmware/target/arm/imx233/sony-nwz/lcd-nwze360.c [diff]
firmware/target/arm/imx233/sony-nwz/lcd-nwze370.c [diff]
firmware/target/arm/ipod/lcd-gray.c [diff]
firmware/target/arm/lcd-ssd1815.c [diff]
firmware/target/arm/olympus/mrobe-100/lcd-mr100.c [diff]
firmware/target/arm/rk27xx/lcdif-rk27xx.c [diff]
firmware/target/arm/s5l8700/yps3/lcd-yps3.c [diff]
firmware/target/arm/samsung/yh920/lcd-yh920.c [diff]
firmware/target/coldfire/iaudio/m3/lcd-m3.c [diff]
firmware/target/coldfire/iaudio/m5/lcd-m5.c [diff]
firmware/target/coldfire/iriver/h100/lcd-h100.c [diff]
firmware/target/coldfire/mpio/hd300/lcd-hd300.c [diff]
firmware/target/mips/ingenic_jz47xx/xduoo_x3/lcd-xduoo_x3.c [diff]
William Wilgus
21st Mar 14:00 60e5786b48: lcd-bitmap-common optimize a few viewport functions
firmware/drivers/lcd-bitmap-common.c [diff]
William Wilgus
21st Mar 12:14 64c577a0c5: filetree.c cleanup

just a little cleanup of ft file filtering code

store result of filter mask to a local var

put skin apply code in its own function
apps/filetree.c [diff]
William Wilgus
2022-03-20 c7c9a0f069: rbutil: Minor code cleanup.
utils/rbutilqt/base/autodetection.cpp [diff]
utils/rbutilqt/base/autodetection.h [diff]
Dominik Riebeling
2022-03-20 04e22d8719: rbutil: Replace use of QRegExp with QRegularExpression.
utils/rbutilqt/base/system.cpp [diff]
utils/rbutilqt/base/talkfile.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
Dominik Riebeling
2022-03-20 01d2979bce: [COV] metadata module, fix uninit warnings #2

decrease size hit of initializing asf by using a union remove init from bytes LE conversion in metadata common
-- bad idea for performance
lib/rbcodec/metadata/asf.c [diff]
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2022-03-20 2a88ec50cd: [COV] metadata module, fix uninit warnings
lib/rbcodec/metadata/aac.c [diff]
lib/rbcodec/metadata/asf.c [diff]
lib/rbcodec/metadata/metadata_common.c [diff]
lib/rbcodec/metadata/mp4.c [diff]
William Wilgus
2022-03-20 ccdd9e6784: rbutil: Fix TTS "waiting for engine" appearing randomly.

QProgressDialog shows / hides itself automatically based on the progress value set, so calling hide() directly doesn't prevent the dialog from showing itself.

Change the logic to set a value instead. Fixes the progress dialog sometimes appearing in situations where it wasn't used at all.
utils/rbutilqt/base/encttssettings.h [diff]
utils/rbutilqt/base/ttsfestival.cpp [diff]
utils/rbutilqt/encttscfggui.cpp [diff]
utils/rbutilqt/encttscfggui.h [diff]
Dominik Riebeling
2022-03-20 c21d10cb33: rbutil: Rework Festival TTS integration.

When communicating with Festival via socket don't assume readAll() would read all data we expect. We can only read the data that has been sent by the server so far, and this is not necessarily complete.

This notably improves the configuration dialog response and reliably.
utils/rbutilqt/base/ttsfestival.cpp [diff]
Dominik Riebeling
2022-03-19 e21f80f397: rbutil: Remove use of deprecated QSignalMapper.

With Qt5 we can now use lambdas instead.
utils/rbutilqt/encttscfggui.cpp [diff]
utils/rbutilqt/encttscfggui.h [diff]
Dominik Riebeling
2022-03-19 fcffe5fb81: rbutil: Change all download links to https.
utils/rbutilqt/changelog.txt [diff]
utils/rbutilqt/rbutil.ini [diff]
Dominik Riebeling
2022-03-19 7a2fdf3fd6: rbutil: Handle SSL certificate errors on first request.

Qt uses the systems certificate store. On old(er) systems the root certificate might not be present, so checking the certificate from the rockbox.org server might fail.

On startup we try to download the build-info file. If this fails with a certificate error allow the user to temporarily accept the rockbox.org certificate for all successive requests.
utils/rbutilqt/base/httpget.cpp [diff]
utils/rbutilqt/base/httpget.h [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/rbutilqt.h [diff]
Dominik Riebeling
2022-03-19 a0459de4d5: rbutil: HttpGet: Return NetworkError in done signal.

Return the status value instead of simply a bool.
utils/rbutilqt/base/bootloaderinstallbase.cpp [diff]
utils/rbutilqt/base/bootloaderinstallbase.h [diff]
utils/rbutilqt/base/httpget.cpp [diff]
utils/rbutilqt/base/httpget.h [diff]
utils/rbutilqt/base/voicefile.cpp [diff]
utils/rbutilqt/base/voicefile.h [diff]
utils/rbutilqt/base/zipinstaller.cpp [diff]
utils/rbutilqt/base/zipinstaller.h [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/rbutilqt.h [diff]
utils/rbutilqt/test/test-httpget.cpp [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
utils/rbutilqt/themesinstallwindow.h [diff]
Dominik Riebeling
2022-03-19 08b42791ff: tag_cache.c optimize str_begins_ends_oneof

the function is shared
apps/tagcache.c [diff]
William Wilgus
2022-03-19 ddbca125a6: tagtree/tagcache add new clause operators begins/ends _oneof

new operators @^, @$ begins_oneof and ends_oneof

albumartist @^ "L|The L" Led Zeppelin, The look

albumartist @$ "girls|Boys" spice girls, beasty boys
apps/tagcache.c [diff]
apps/tagcache.h [diff]
apps/tagtree.c [diff]
William Wilgus
2022-03-19 0f2d623216: tagcache add logging option for clause matching #2
apps/tagcache.c [diff]
William Wilgus
2022-03-19 a56975af6c: tagcache add logging option for clause mtching
apps/tagcache.c [diff]
William Wilgus
2022-03-19 b65763bc10: [COV] fix uninitialized warning
firmware/drivers/fat.c [diff]
William Wilgus
2022-03-18 a5e684c894: BUGFIX root_menu.c
apps/root_menu.c [diff]
William Wilgus
2022-03-18 b31444261e: [COV] cuesheet.c var line could be uninitialized
apps/cuesheet.c [diff]
William Wilgus
2022-03-18 99f8457279: cuesheet, fix dumb typo
apps/cuesheet.c [diff]
William Wilgus
2022-03-18 a13ae2afd5: [COV] folder_select buffer overrun
apps/gui/folder_select.c [diff]
William Wilgus
2022-03-16 b309fae2bc: touchscreen: fix quickscreen

Looks like I made a mistake testing this originally because there's no way this would've worked.
apps/gui/quickscreen.c [diff]
Aidan MacDonald
2022-03-16 67f7d399e5: x1000: restore crt0.S cache flush

I-cache must be flushed after copying code to IRAM... duh.
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
2022-03-16 c676736792: x1000: optimize crt0.S, improve correctness

Replace inline section copy/fill loops with subroutines, which reduces code size a bit and and handle zero size copies properly.

Remove the cache initialization loop as well. There's no actual reason for this because the SPL initializes the caches and just dropping the cache can even be harmful (in this case it wasn't, because the SPL flushes the whole cache right before calling in).
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
2022-03-16 0df71c952c: rds: make newly added function static

It won't be called outside the RDS core.
firmware/drivers/rds.c [diff]
Wolfram Sang
2022-03-16 b3e0d18f7d: skin_engine.c settings_apply_skins cleanup

just some cleanup and removal of ifdefs in favor of dummy functions
apps/gui/skin_engine/skin_backdrops.c [diff]
apps/gui/skin_engine/skin_engine.c [diff]
apps/gui/skin_engine/skin_engine.h [diff]
apps/gui/statusbar-skinned.c [diff]
apps/gui/statusbar-skinned.h [diff]
William Wilgus
2022-03-15 a5c16d2990: rb_namespace add logf

add logging to the namespace file to allow debug of root redirect
firmware/common/file.c [diff]
firmware/common/file_internal.c [diff]
firmware/common/rb_namespace.c [diff]
William Wilgus
2022-03-15 20b9ce5497: debug_menu make scrolling manual for OS Threads item

the automatic scrolling is not very nice to try and read instead use OK button to advance and long press std ok to reset to beginning
(or scroll up and down)
apps/debug_menu.c [diff]
William Wilgus
2022-03-14 542609bb31: metadata.c fix red

comma, helpful
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2022-03-14 9b4e784560: BUGFIX string_option parsers

fix bugs introduced in the switch over to using string_option instead of if else strcmp trees, embedded album art should work again skin parser had an error for 'noborder' and 'nobar'
apps/gui/skin_engine/skin_parser.c [diff]
lib/rbcodec/metadata/asf.c [diff]
lib/rbcodec/metadata/id3tags.c [diff]
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2022-03-14 6dcbf7ff77: debug_menu scroll os stack screen

the os threads items update too quick to see them scroll

implement a simple scroller
apps/debug_menu.c [diff]
William Wilgus
2022-03-13 6fdc160fab: dircache_redirect.h, hide root volume when only one mounted

there is no need to show the root of the drive when only the internal is mounted
firmware/include/dircache_redirect.h [diff]
William Wilgus
2022-03-13 6d122e3932: cuesheet, cleanup tag code with strncmp
apps/cuesheet.c [diff]
William Wilgus
2022-03-13 2352cef6d0: replace more strcmp if then trees with string_option() 1
apps/misc.c [diff]
apps/shortcuts.c [diff]
lib/rbcodec/metadata/asap.c [diff]
lib/rbcodec/metadata/asf.c [diff]
lib/rbcodec/metadata/id3tags.c [diff]
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2022-03-13 a62d36d9e7: Warble builds define WARBLE fix metadata_common in warble builds
lib/rbcodec/metadata/metadata_common.c [diff]
tools/configure [diff]
William Wilgus
2022-03-13 430999e399: utils: Work around windeployqt bug.

For Qt versions less than 5.14 MinGW windeployqt requires passing
--release or --debug to pick the correct libs to deploy. For newer version this must not be passed, or otherwise windeployqt errors out.

Use a conditional expression to only add the parameter for older Qt versions.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2022-03-13 77e4dd81f5: option_string clean-up and consolidate with metadata_common
apps/gui/skin_engine/skin_parser.c [diff]
lib/rbcodec/metadata/metadata_common.c [diff]
lib/rbcodec/metadata/metadata_common.h [diff]
lib/rbcodec/metadata/mp4.c [diff]
lib/rbcodec/metadata/replaygain.c [diff]
William Wilgus
2022-03-13 eb86ee296a: skin_parser.c fix red stupid typo
apps/gui/skin_engine/skin_parser.c [diff]
William Wilgus
2022-03-13 3f2ad8bf2b: skin_parser.c fix red
apps/gui/skin_engine/skin_parser.c [diff]
William Wilgus
2022-03-13 74df3ba2d8: add function string_option to misc.c use in skin_parser.c

function string_option allows a string to be found in a supplied list of options
apps/gui/skin_engine/skin_parser.c [diff]
apps/misc.c [diff]
apps/misc.h [diff]
William Wilgus
2022-03-13 a9c62f2c39: metadata_common.c optimize parse_tag
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2022-03-12 22a6ae97a6: utils: Fix windeployqt step once more.

The path was actually correct before, the filename wasn't.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2022-03-12 96f5b07d39: utils: Fix windeployqt call in cmake deploy step.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2022-03-12 403cb96f3a: rbutil: Fix installing fonts / manual for development builds.

For development builds we provide a download URL, but use the daily build files. Those require the version of the daily build to be set when expanding the URL string.
utils/rbutilqt/base/playerbuildinfo.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/test/test-playerbuildinfo.cpp [diff]
Dominik Riebeling
2022-03-12 ce70e34476: rbutil: Fix ipodpatcher bootloader uninstall.

Fix mountpoint not passed and sectorbuf not initialized properly.
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
Dominik Riebeling
2022-03-12 5c7b0e071f: rbutil: Fix crash on sansapatcher access.

We now initialize sectorbuf explicitly, and there are situation where it wasn't initialized explicitly.
utils/rbutilqt/base/bootloaderinstallsansa.cpp [diff]
Dominik Riebeling
2022-03-12 1ff11b627b: rbutil: Fix bootloader uninstall availability.

The logic for disabling the uninstall button was wrong.
utils/rbutilqt/rbutilqt.cpp [diff]
Dominik Riebeling
2022-03-12 0ce287503c: x1000: bootloader: use list widget for the recovery menu

This allows the menu to scroll when there isn't enough vertical space to display the whole menu.
bootloader/x1000/recovery.c [diff]
Aidan MacDonald
2022-03-12 4b51ca5ce6: x1000: bootloader: add GUI list widget
bootloader/x1000/gui.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 8b4949381c: x1000: add TCSM section to linker script

This is intended for debugging OF kernel boot problems and has to be enabled manually at compile time to make it usable.
firmware/target/mips/ingenic_x1000/app.lds [diff]
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
2022-03-12 0de2d3a0b6: utils: rework cmake deploy function.

Use named arguments for function and allow passing additional executable targets to be copied to the deploy tree.

Update current uses and add ipodpatcher and sansapatcher to Rockbox Utility deployment.

This is in preparation for moving ipodpatcher / sansapatcher functionality out of Rockbox Utility so we eventually can avoid elevation / sudo of the whole installer. Currently this only results in Rockbox Utility releases shipping ipodpatcher / sansapatcher executables.
utils/cmake/deploy.cmake [diff]
utils/rbutilqt/CMakeLists.txt [diff]
utils/themeeditor/CMakeLists.txt [diff]
Dominik Riebeling
2022-03-12 7319356dfd: rbutil: Update build instructions.
utils/rbutilqt/INSTALL [diff]
Dominik Riebeling
2022-03-12 748b00a7fc: ipodpatcher: Split executable only parts out.

Allow building both as library and executable at the same time.
utils/CMakeLists.txt [diff]
utils/ipodpatcher/ipodpatcher-aupd.c [new]
utils/ipodpatcher/ipodpatcher.c [diff]
Dominik Riebeling
2022-03-12 08afedf1f5: sansapatcher: Add cmake target to build executable.
utils/CMakeLists.txt [diff]
Dominik Riebeling
2022-03-12 d56964cc2b: x1000: add dual boot helpers for the main bootloader

Two helpers (_init_clocktree and _init_uart2) already existed in the SPL and are copied verbatim from there. The SPL versions are still present and will be removed when dual boot works from the main bootloader.

The other two helpers (_cleanup and _load_pdma_fw) are new.
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.h [diff]
Aidan MacDonald
2022-03-12 a87f93d8ff: x1000: add function for booting linux kernels
firmware/target/mips/ingenic_x1000/boot-x1000.c [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.h [diff]
Aidan MacDonald
2022-03-12 e6c2f26e82: x1000: bootloader: add uImage loaders

Adds loaders for uImages on the SD card or on a raw flash partition. These work similarily to load_rockbox() and return a buflib alloc and size. Booting the image is left up to the caller.
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 b87f2ed851: x1000: bootloader: refactor rockbox boot

Separate loading out into its own routine with a file name parameter in preparation for multiboot support.
bootloader/x1000/boot.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 ed897d1359: x1000: bootloader: move the main function to its own file

Now that everything has been refactored into separate files the main routine is the only thing left to move. Put it in main.c.
bootloader/SOURCES [diff]
bootloader/x1000.c bootloader/x1000/main.c [rename]
Aidan MacDonald
2022-03-12 5bdb2fccdb: x1000: bootloader: refactor usb handling

Drop init_usb(), instead initialize USB early in the main function so the hardware is placed into a known good state after a USB boot. The impact on boot time should be minimal.
bootloader/x1000.c [diff]
bootloader/x1000/recovery.c [diff]
bootloader/x1000/utils.c [diff]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 7554a49309: x1000: bootloader: refactor init_disk

Add check_disk() to query the disk insertion status and prompt the user if necessary. Use this in place of init_disk().

Perform an unconditional disk_mount_all() from the main function.
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
bootloader/x1000/boot.c [diff]
bootloader/x1000/install.c [diff]
bootloader/x1000/utils.c [new]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 905591215f: x1000: bootloader: split off recovery menu code
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
bootloader/x1000/recovery.c [new]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 e2fcbd04ea: x1000: bootloader: split off rockbox boot code
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
bootloader/x1000/boot.c [new]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 22cf852db1: x1000: bootloader: split off installer code
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
bootloader/x1000/install.c [new]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 6fb1b8b342: x1000: bootloader: split off GUI code
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
bootloader/x1000/gui.c [new]
bootloader/x1000/x1000bootloader.h [diff]
Aidan MacDonald
2022-03-12 8558255f45: x1000: bootloader: split off definitions to a header
bootloader/x1000.c [diff]
bootloader/x1000/x1000bootloader.h [new]
Aidan MacDonald
2022-03-12 58225bd2c8: x1000: remove plugin and codec buffers on bootloader

On the bootloader there's no point reserving memory for these, the only users of codecbuf/pluginbuf are in the apps/ tree.
firmware/target/mips/ingenic_x1000/app.lds [diff]
Aidan MacDonald
2022-03-12 38eafb60ff: x1000: use core_alloc in bootloader for loading rockbox

Using the audio buffer directly is a bad idea because this will render core_alloc non-functional if load_firmware() writes into the buffer but then fails, for example on a checksum mismatch.
bootloader/x1000.c [diff]
firmware/target/mips/ingenic_x1000/app.lds [diff]
Aidan MacDonald
2022-03-12 376ffbcf9a: ARM support, optimize popcount fn
lib/arm_support/support-arm.S [diff]
William Wilgus
2022-03-12 eecf840989: playlist.c fix red for non-DIRCACHE targets
apps/playlist.c [diff]
William Wilgus
2022-03-12 a59b3c5d11: playlist_resume, wait for dircache to complete before loading songs

with root redirect and even relative paths eventually we need the dircache to get files from the disk
apps/playlist.c [diff]
William Wilgus
2022-03-12 97ec0a7e73: Root redirect un-hide root volume

this appears to be problematic for now
firmware/include/dircache_redirect.h [diff]
William Wilgus
2022-03-12 95af36d0dd: playlist.c fix red for non multivolume targets
apps/playlist.c [diff]
William Wilgus
2022-03-12 eb32238b22: playlist.c use basename for playlist_get_filename_crc32

strip the vol and use the relative portion
apps/playlist.c [diff]
William Wilgus
2022-03-12 359c66982f: playback.c use file_exists rather than open to check for bad files

the worst case is really slow for open
apps/playback.c [diff]
William Wilgus
2022-03-11 603412f447: x1000: Clarify definition & usage of RAM areas

Document what the symbols are supposed to mean, fixup SPL's usage of DRAM_END which should really be SDRAM_END instead. No functional changes.
firmware/export/x1000.h [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
firmware/target/mips/ingenic_x1000/spl.lds [diff]
Aidan MacDonald
2022-03-11 cdee5284d4: jztool: support new binary header on x1000
utils/jztool/src/x1000.c [diff]
Aidan MacDonald
2022-03-11 35242c8d98: x1000: support new binary header in bootloader
bootloader/x1000.c [diff]
Aidan MacDonald
2022-03-11 428491df69: x1000: support new binary header in rolo
firmware/SOURCES [diff]
firmware/export/x1000.h [diff]
firmware/rolo.c [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.c [new]
firmware/target/mips/ingenic_x1000/boot-x1000.h [diff]
Aidan MacDonald
2022-03-11 7fa48faeb5: multiboot: Refactor duplicated functions to a separate file

The implementation of write_bootdata() and get_redirect_dir() was copied verbatim in two different places, obviously a bad thing for maintainability. This moves them to a new file multiboot.c as they are only used for multiboot.
apps/debug_menu.c [diff]
firmware/SOURCES [diff]
firmware/common/multiboot.c [new]
firmware/common/rb-loader.c [diff]
firmware/export/mi4-loader.h [diff]
firmware/export/multiboot.h [new]
firmware/include/dircache_redirect.h [diff]
firmware/include/rb-loader.h [diff]
firmware/rolo.c [diff]
firmware/target/arm/pp/mi4-loader.c [diff]
Aidan MacDonald
2022-03-11 439b4e8bca: multiboot: Remove bad multiboot code from hosted RoLo

This looks like it was copy-pasted blindly from elsewhere and it wouldn't even compile, since hosted RoLo is completely different from native RoLo.
firmware/target/hosted/rolo.c [diff]
Aidan MacDonald
2022-03-11 eae9f6f5b7: erosqnative: Fix missing END marker in LCD enable sequence
firmware/target/mips/ingenic_x1000/erosqnative/lcd-erosqnative.c [diff]
Aidan MacDonald
2022-03-11 355553baf4: playlist_resume, fix control fd, add some error info

I ocassionally see Playlist Invalid messages but which part is failing? eventually it works so its probably a race
apps/playlist.c [diff]
William Wilgus
2022-03-11 f6a2bf28e1: BUGFIX file.c open failure leaves open file handle
firmware/common/file.c [diff]
William Wilgus
2022-03-11 68d0175172: BUGFIX arm aeabi_sdivmod crashes in interupt mode
lib/arm_support/support-arm.S [diff]
William Wilgus
2022-03-09 57cffae369: rbutil: Change MacOS bundle identifer to org.rockbox.
utils/rbutilqt/Info.plist [diff]
Dominik Riebeling
2022-03-09 01e76548c3: backtrace, put pc and sp on their own lines
lib/unwarminder/backtrace-unwarminder.c [diff]
William Wilgus
2022-03-08 a8b997e4e9: skinparser cleanup, optimize

hash clause strings for =, ==, !=, <, > <=, >= store result of get_param() where possible
apps/gui/skin_engine/skin_parser.c [diff]
William Wilgus
2022-03-08 b1965b4197: rbutil: Fix setting bootloader "file" for Ipod bootloader.

On Ipods we use the bootloader "filename" to pass the mountpoint, which is then used to determine the correct device to use.
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
Dominik Riebeling
2022-03-08 3cebc983a2: rbutil: Fix a crash for devices without bootloader file.

Don't try to get a bootloader filename from an empty list. This happens if the device doesn't have a bootloader file on disk.
utils/rbutilqt/base/bootloaderinstallbase.cpp [diff]
Dominik Riebeling
2022-03-08 911b216aff: rbutil: Properly initialize sansa / ipod bootloader buffer.

Fixes a crash on MacOS.
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
utils/rbutilqt/base/bootloaderinstallsansa.cpp [diff]
Dominik Riebeling
2022-03-06 ca12478df6: x1000: add simple binary header to declare the load address

The header format is basic, a variable length list of values tagged by 4-byte strings. The main application to to allow a loader to determine the load address of the binary at runtime instead of using a hardcoded address. But the header contents aren't fixed and it could be extended for other purposes too.
firmware/target/mips/ingenic_x1000/crt0.S [diff]
Aidan MacDonald
2022-03-06 19d95d7b56: keyremap add plain text import and export

allows users to edit and view keymaps in a text editor
(parser requires one entry per line (LF or CRLF work as line endings)

allow naming of files on save
apps/plugins/keyremap.c [diff]
William Wilgus
2022-03-06 bc3fa53937: Sansa Multiboot Root Redirect Enhance + bug fix

filename buffer was too small to retrieve redirect path

if redirected to sd root remove <SD1> as it is redundant
apps/debug_menu.c [diff]
firmware/include/dircache_redirect.h [diff]
William Wilgus
2022-03-04 ee87bfb933: Add support code for dealing with U-Boot uImages

Adds a loader for the legacy uImage format that is commonly used on embedded Linux systems. It verifies checksums and supports uncompressed and gzipped images. Supports arbitrary reader functions to allow the images to be streamed off any storage device, for optimal RAM use.
firmware/SOURCES [diff]
firmware/export/linuxboot.h [new]
firmware/linuxboot.c [new]
Aidan MacDonald
2022-03-04 d541a3a191: x1000: fix nand driver reference counting

Somehow I screwed this up as well. Seems it didn't cause trouble.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
Aidan MacDonald
2022-03-04 3cb7167e22: x1000: fix bug in nand_read_bytes

This didn't account for partial page reads properly which resulted in corrupted data. Fortunately, current released bootloaders do not perform such reads so they don't trigger this bug.
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
Aidan MacDonald
2022-03-04 3bd5f335f7: inflate: Add helper for getting decompressed data size

Helper for another semi-typical operation: find out how big of a buffer should be allocated before decompressing. This can be useful when the stream container doesn't specify the decompressed size.
firmware/common/inflate.c [diff]
firmware/include/inflate.h [diff]
Aidan MacDonald
2022-03-04 ce4620413b: inflate: Add helpers for using in-memory buffers

Using an in-memory buffer for the input or output data for 'inflate' is likely to be extremely common and there's really only one way to do it, so predefined helpers should be provided.
firmware/common/inflate.c [diff]
firmware/include/inflate.h [diff]
Aidan MacDonald
2022-03-04 fe4628fc30: Fix Red Multiboot Firmware Root Redirect

Exclude bootloaders
firmware/include/dircache_redirect.h [diff]
William Wilgus
2022-03-04 c9857098ac: Multiboot Firmware Root Redirect - WIP

Loads external drive into root namespace Root Redirects can now be put into different folders For instance placing '/_test' into SD1/rockbox_main.<playername> will redirect to /<1>/_test/.rockbox Debug menu>Bootdata now has root directory listed in addition to RAW Bootdata

Redirect root work from Michael Sevakis g#1556, RESTORED -> g#4256
apps/debug_menu.c [diff]
firmware/common/disk.c [diff]
firmware/include/dircache_redirect.h [diff]
William Wilgus
2022-03-04 c7bbd5b090: Fix Red SDL, Android mounting root directory, and all the yellow too
firmware/include/dircache_redirect.h [diff]
firmware/target/hosted/android/filesystem-android.h [deleted]
firmware/target/hosted/sdl/filesystem-sdl.h [diff]
William Wilgus
2022-03-04 0ddac1fdaf: Fix Red SDL, Android mounting root directory

Not actually used in either atm
firmware/target/hosted/android/filesystem-android.h [new]
firmware/target/hosted/sdl/filesystem-sdl.h [diff]
William Wilgus
2022-03-03 9daacabd65: [RESTORED!] Allow mounting of any directory as the root directory.

Provide definitions for the macros:
* RB_ROOT_VOL_HIDDEN(v) to exclude certain items from the root.
* RB_ROOT_CONTENTS to return a string with the name of the directory to mount in the root.

Defaults are in export/rbpaths.h

It's a bit much for those that don't need the full functionality. Some conditional define can cut it back a lot to cut out things only needed if alternate root mounts are required. I'm just not bothering yet. The basic concept would be applied to all targets to keep file code from forking too much.

Author: Michael Sevakis
firmware/SOURCES [diff]
firmware/common/dir.c [diff]
firmware/common/dircache.c [diff]
firmware/common/disk.c [diff]
firmware/common/file.c [diff]
firmware/common/file_internal.c [diff]
firmware/common/fileobj_mgr.c [diff]
firmware/common/pathfuncs.c [diff]
firmware/common/rb_namespace.c [new]
firmware/export/mv.h [diff]
firmware/export/pathfuncs.h [diff]
firmware/export/rbpaths.h [diff]
firmware/include/dircache_redirect.h [diff]
firmware/include/file_internal.h [diff]
firmware/include/fileobj_mgr.h [diff]
firmware/include/fs_defines.h [diff]
firmware/include/rb_namespace.h [new]
uisimulator/common/filesystem-sim.c [diff]
William Wilgus
2022-03-03 f88ea12bac: tagcache compress uniqbuf 2 16-bit indices occupy a single 32 bit slot

a lot of space is wasted when file indices less than 65535 entries should be more than 1 byte apart so use the LSB as a flag when indices are > 65535 set flag to 0 and proceed as before

explicitly mark uniqbuf as 32bit
apps/tagcache.c [diff]
apps/tagcache.h [diff]
apps/tagtree.c [diff]
William Wilgus
2022-02-28 ae97d410c5: utils: Set cmake build type to default to Release.
utils/CMakeLists.txt [diff]
Dominik Riebeling
2022-02-28 8d462a1edd: rbutil: Rework Logo display.

Replace QLabel with QSvgWidget so the widget draws the svg directly instead of first creating a pixmap from it.

This also avoids an issue when building with mxe which causes the image to not show due to a missing svg plugin (which doesn't happen for svg icons.)
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/rbutilqtfrm.ui [diff]
Dominik Riebeling
2022-02-28 83e4078d9c: cmake: Strip Release binaries when building with gcc.
utils/CMakeLists.txt [diff]
Dominik Riebeling
2022-02-28 72904569e3: Remove outdated theme editor deploy script.

This doesn't work anymore since the switch to cmake.
utils/common/deploy-themeeditor.py [deleted]
utils/common/deploy.py [deleted]
Dominik Riebeling
2022-02-28 fa1e6cc5bf: rbutil: Replace deploy with tarball script.

The old deployment script doesn't work anymore due to the change to cmake, and since we build the distribution packages (zip / dmg / AppImage) with cmake directly there's not much need left for the old deployment.
utils/common/gitscraper.py [diff]
utils/common/deploy-rbutil.py utils/common/tarball-rbutil.py [rename]
Dominik Riebeling
2022-02-28 045f52d475: tagtree.c optmize clause operator parsing

makes WS after a clause conditional optional
apps/tagtree.c [diff]
William Wilgus
2022-02-27 1bcb1e39ee: tagcache, coverity cleanup, Add TAGS_ALL_COUNT
apps/tagcache.c [diff]
apps/tagcache.h [diff]
William Wilgus
2022-02-26 6b360d8b04: action.c keyremap clean-up add logf to core_keymap.c move the remap out of the loop and eliminate a status flag
apps/action.c [diff]
apps/action.h [diff]
apps/core_keymap.c [diff]
William Wilgus
2022-02-26 887249671c: TagTree Show file name for tag_title [UNTAGGED]

fallback to filename as [UNTAGGED] is a terrible way to browse titles
apps/tagtree.c [diff]
William Wilgus
2022-02-26 836616b937: Tagcache Don't create filters when parsing a logical OR

if possible search clauses are converted to filters

once a logical OR is added to the mix (CLAUSE1|CLAUSE2 & CLAUS3)) if CLAUSE1,2 are database non-numeric tags they get made into filters but the logical OR gets carried to the next CLAUSE

Rather than trying to figure this out just keep all clauses around a logical OR
apps/tagcache.c [diff]
William Wilgus
2022-02-24 bba0564ec1: keyremap plugin use yes_no prompts, bugfix

use the supplied yes_no dialogs for file delete, key reset, save prompt

return to root menu automatically after loading a file

fix bug where deleting the last file in the list exited the menu
apps/plugins/keyremap.c [diff]
William Wilgus
2022-02-24 295ec3790d: Core Keyremap Allow setting keymap from plugin

Allow setting and removing keyremap on the fly

It was pretty annoying trying to work out a keyremap with a restart required to set the remap and was quite annoying when I was no longer able to navigate to the plugin or filebrowser due to setting the wrong remap

now you can try out a keymap and if it doesn't work a restart will sort things out
apps/core_keymap.c [diff]
apps/core_keymap.h [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/keyremap.c [diff]
William Wilgus
2022-02-23 f7bb9e2167: Add custom action mapping to core

results of an idea I discussed in IRC

changed the way the lookup in the remap file works..

entries consist of 3 int [action, button, prebtn] context look up table is at the beginning action_code contains the (context | CONTEXT_REMAPPED) button_code contains the index of the first remapped action for the matched context
[0] CORE_CONTEXT_REMAP(ctx1) offset1=(3), count=(1)
[1] CORE_CONTEXT_REMAP(ctx2, offset2=(5), count=(1)
[2] sentinel, 0, 0
[3] act0, btn, 0
[4] sentinel 0, 0
[5] act1, btn, 0
[6] sentinel, 0, 0

Note: last entry of each group is always the sentinel [CONTEXT_STOPSEARCHING, BUTTON_NONE, BUTTON_NONE] contexts must match exactly -- re-mapped contexts run before the built in w/ fall through contexts ie. you can't remap std_context and expect it to match std_context actions from the WPS context.

-- Done --

Code for reading core remap entries

-- Done --

import of core remap entires from disk
-- Done --

plugin to set new key mapping (the hard part)

The plugin is started and FULLY functional you can add actions and contexts you can change context, action, button, prebtn delete keymap files load keymapfiles save user keymaps test keymaps before applying them loading keymaps to core still requires restart
-----------------------------------------------------------------------------------------------
apps/SOURCES [diff]
apps/action.c [diff]
apps/action.h [diff]
apps/core_keymap.c [new]
apps/core_keymap.h [new]
apps/main.c [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/keyremap.c [new]
apps/plugins/lib/action_helper.h [diff]
apps/plugins/lib/action_helper.pl [diff]
apps/plugins/lib/button_helper.h [diff]
apps/plugins/lib/button_helper.pl [diff]
apps/plugins/lua/rbdefines_helper.pl [diff]
William Wilgus
2022-02-22 7952687185: FS #13337: Updated Slovak translation (Matej Golian)
apps/lang/slovak.lang [diff]
docs/CREDITS [diff]
Solomon Peachy
2022-02-12 e8faf2f2ad: buflib: add a common dummy callbacks struct & use it

There are various allocations that can't be moved or shrunk. Provide a global callback struct for this use case instead of making each caller declare its own dummy struct.

Also fixed ROLO and x1000 installer code which incorrectly used movable allocations.
apps/playlist.c [diff]
apps/plugin.c [diff]
apps/recorder/pcm_record.c [diff]
apps/tagcache.c [diff]
firmware/buflib.c [diff]
firmware/common/zip.c [diff]
firmware/include/buflib.h [diff]
firmware/rolo.c [diff]
firmware/target/mips/ingenic_x1000/installer-x1000.c [diff]
firmware/usbstack/usb_storage.c [diff]
lib/x1000-installer/src/xf_nandio.c [diff]
lib/x1000-installer/src/xf_package.c [diff]
lib/x1000-installer/test_lib/core_alloc.c [diff]
lib/x1000-installer/test_lib/core_alloc.h [diff]
Aidan MacDonald
2022-02-07 95dfc489b5: sync clock with RDS time

Tested with my SansaClip+. I don't think this will need extra battery but let me know if I am wrong.
apps/features.txt [diff]
apps/lang/english.lang [diff]
apps/menus/radio_menu.c [diff]
apps/menus/time_menu.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
firmware/drivers/rds.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/time_and_date.tex [diff]
Wolfram Sang
2022-02-07 5b8873bf33: RFT: convert Gigabeat RDS to thread

This kind of reverts 7b596416bf ("Gigabeat S: Update RDS processing to use asynchronous I2C rather than thread."). However, requiring RDS to run in thread context will a) allow more upcoming features and b) remove quite some complexity from the codebase (see the diffstat here) because Gigabeat is the only user. iMX31 should be able to handle one more thread, as it can even run Linux.
firmware/drivers/rds.c [diff]
firmware/drivers/tuner/si4700.c [diff]
firmware/export/config.h [diff]
firmware/export/config/gigabeats.h [diff]
firmware/export/si4700.h [diff]
firmware/target/arm/imx31/gigabeat-s/fmradio-i2c-gigabeat-s.c [diff]
Wolfram Sang
2022-02-06 8d453ae9c3: Fix glitches with custom list title viewports

Elements were not being drawn correctly or title text appeared delayed in several places when using themes with a custom viewport for list titles.

E.g.:
- after deleting a shortcut
- when returning from a warning screen in Playlist Viewer
- returning to some Settings screens
- in "Playing time" screen
apps/menu.c [diff]
apps/onplay.c [diff]
apps/playlist_viewer.c [diff]
apps/shortcuts.c [diff]
Christian Soffke
2022-02-01 04cbb3c7e4: misc: Add 'mpga' as a valid file extension

Some podcasts use this, apparently.
apps/filetypes.c [diff]
manual/advanced_topics/main.tex [diff]
manual/appendix/file_formats.tex [diff]
Solomon Peachy
2022-01-30 fb91184c4f: PictureFlow: Fix broken (iPod) keymap

I must have only tested de8ee6c9e9 using my custom iPod keymap. Re-mapping the "Left" and "Right" buttons in this context badly breaks existing behavior in Pictureflow when using Rockbox's default iPod keymap.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-30 2ddbb9cad5: Fix manual build on some targets (76a2a00732)
manual/advanced_topics/main.tex [diff]
Solomon Peachy
2022-01-30 b25d8457bc: Shanling Q1: fix DAC power mode switching

The OST prescaler bugfix (7a5130a277) broke runtime switching between 1.0V and 2.0V modes. The 1ms delay after shutting down the DAC isn't long enough to reset it, so it gets stuck in the power mode assigned at boot. Change the delay back to 4ms, the effective value prior to the OST bugfix.
firmware/target/mips/ingenic_x1000/shanlingq1/audiohw-shanlingq1.c [diff]
Aidan MacDonald
2022-01-30 76a2a00732: si4700: optimize RDS cache update a little

use si4700_read() instead of si4700_read_reg() to make it clear we are not interested in the register itself but in the cache update. Also, a tiny bit more efficient as we save a function call and don't request a return value we don't use anyhow.
firmware/drivers/tuner/si4700.c [diff]
Wolfram Sang
2022-01-30 68887b4730: manual: reenable "Configuring the Theme" for devices without remote LCD

Commit 0c4f89370d ("[2/4] get rid of HAVE_LCD_CHARCELLS") missed a closing brace which disabled the above topic in my Sansa Clip+ manual.
manual/advanced_topics/main.tex [diff]
Wolfram Sang
2022-01-30 e91e8439ca: FS #13335: Updated Polish translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
2022-01-30 6fd18ef4a5: FS #13334: Updated Italian translation (Alessio Lenzi)
apps/lang/italiano.lang [diff]
Solomon Peachy
2022-01-29 127bb1b6e1: FiiO M3K: remove volume setting on rec. screen

This controls the playback volume, which is not useful for the M3K because it's impossible to play back and record at the same time.
apps/recorder/recording.c [diff]
firmware/export/config/fiiom3k.h [diff]
Aidan MacDonald
2022-01-29 c1f1d91404: FiiO M3K: audio recording

Recording works now, although I'm sure there will be a few things that need fine-tuning. A major issue is that writing to the SD card creates noticable interference, which happens on the original firmware too but seems worse under Rockbox.

(Since Rockbox waits until RAM fills up before writing data, the interference will only be heard on >50 MiB recordings.)
apps/keymaps/keymap-fiiom3k.c [diff]
firmware/export/ak4376.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c [diff]
manual/platform/keymap-fiiom3k.tex [diff]
Aidan MacDonald
2022-01-22 bc5a638594: Option to switch off album art or to prefer file over embedded

Large embedded album art can cause pauses during playback or when skipping between tracks, especially on older devices, but embedded art is currently loaded even when separately stored smaller image files would be available.

A workaround is to remove large album art from the metadata of files.

This now adds a setting to either turn off loading of album art completely, or to prefer loading the album art from a separate image file and thus ignore the embedded versions.
apps/gui/quickscreen.c [diff]
apps/lang/english.lang [diff]
apps/menus/playback_menu.c [diff]
apps/playback.c [diff]
apps/playback.h [diff]
apps/settings.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
apps/shortcuts.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/playback_options.tex [diff]
Christian Soffke
2022-01-18 aafe2dd2d1: tagcache: don't allow temp commit buffer to be moved

The temporary buffer used during database commit did not have any buflib callbacks set, which allows it to be moved by buflib at any time. The code is not prepared to deal with this, so things break horribly if anything tries to allocate during the commit.

The solution is to pass dummy callbacks to prevent the buffer from being moved. I expect this may create other issues since the commit uses up all available RAM, but at least things won't get silently corrupted anymore.
apps/tagcache.c [diff]
Aidan MacDonald
2022-01-17 525eb15864: recording: fix mono mode mixdown functions

Rewrite copy_buffer_mono_* functions for correctness.

Bad pointer arithmetic in copy_buffer_mono_l produced wrong results, or panics on archs which can't handle the unaligned pointer.

None of the functions handled zero size copies properly though this probably wasn't an issue in practice.
apps/recorder/pcm_record.c [diff]
Aidan MacDonald
2022-01-17 f68c6c14d9: recscreen: clean up menu building code

Remove the use of constants and ifdefs in favor of a single enum and build the menu with a counter. This simplifies the source and optimizes to the same code.
apps/recorder/recording.c [diff]
Aidan MacDonald
2022-01-17 acc7d16e3b: Fix some hardcoded assumptions in recording.c

There were some hardcoded branches handling left/right gain for line-in or FM radio inputs. If the target only has a microphone, these bits are useless and cause compile errors due to missing audiohw settings, etc. This patch #ifdef's them out.
apps/recorder/peakmeter.c [diff]
apps/recorder/recording.c [diff]
Aidan MacDonald
2022-01-17 8e65f1db55: manual: Document the DAC power mode setting

Make a note of the fact that the M3K DAC's high performance setting is not necessarily the highest quality setting -- see forum post https://forums.rockbox.org/index.php/topic,52917.msg249741.html#msg249741
manual/configure_rockbox/sound_settings.tex [diff]
Aidan MacDonald
2022-01-17 d93e054419: fiiom3k: power down amp before switching DAC power modes

As detailed in the <Low Power Mode> section of the AK4376A datasheet, the amp should be powered down before switching power modes (or to a sample rate <= 12 KHz).
firmware/drivers/audio/ak4376.c [diff]
Aidan MacDonald
2022-01-17 dac3175445: audiohw: avoid magic numbers for DAC power mode

Define proper symbolic constants for power mode. Also allow targets to define the default power mode setting.
apps/settings_list.c [diff]
firmware/drivers/audio/ak4376.c [diff]
firmware/export/ak4376.h [diff]
firmware/export/audiohw.h [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/audiohw-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/audiohw-shanlingq1.c [diff]
Aidan MacDonald
2022-01-17 18b3e91707: x1000: internal codec audio driver
firmware/SOURCES [diff]
firmware/drivers/audio/x1000-codec.c [new]
firmware/export/audiohw.h [diff]
firmware/export/x1000-codec.h [new]
Aidan MacDonald
2022-01-17 15e3d37110: x1000: core PCM recording support
firmware/export/x1000.h [diff]
firmware/target/mips/ingenic_x1000/debug-x1000.c [diff]
firmware/target/mips/ingenic_x1000/pcm-x1000.c [diff]
Aidan MacDonald
2022-01-16 0fbaeed250: Remove ACTION_SETTINGS_RESET

This action has never been used since its introduction in 2006. There's no real need for it, as it's possible to reset settings from the context menu.
apps/action.h [diff]
apps/keymaps/keymap-agptekrocker.c [diff]
apps/keymaps/keymap-c200.c [diff]
apps/keymaps/keymap-clip.c [diff]
apps/keymaps/keymap-creativezv.c [diff]
apps/keymaps/keymap-creativezvm.c [diff]
apps/keymaps/keymap-e200.c [diff]
apps/keymaps/keymap-erosq.c [diff]
apps/keymaps/keymap-fiiom3k.c [diff]
apps/keymaps/keymap-fiiom3klinux.c [diff]
apps/keymaps/keymap-fuze.c [diff]
apps/keymaps/keymap-fuzeplus.c [diff]
apps/keymaps/keymap-gigabeat-s.c [diff]
apps/keymaps/keymap-gigabeat.c [diff]
apps/keymaps/keymap-h10.c [diff]
apps/keymaps/keymap-h1x0_h3x0.c [diff]
apps/keymaps/keymap-hdd1630.c [diff]
apps/keymaps/keymap-hdd6330.c [diff]
apps/keymaps/keymap-hm60x.c [diff]
apps/keymaps/keymap-hm801.c [diff]
apps/keymaps/keymap-ihifi.c [diff]
apps/keymaps/keymap-ihifi770.c [diff]
apps/keymaps/keymap-ihifi800.c [diff]
apps/keymaps/keymap-m200.c [diff]
apps/keymaps/keymap-ma.c [diff]
apps/keymaps/keymap-meizu-m6sl.c [diff]
apps/keymaps/keymap-mini2440.c [diff]
apps/keymaps/keymap-mr100.c [diff]
apps/keymaps/keymap-mr500.c [diff]
apps/keymaps/keymap-nwz.c [diff]
...and 9 more files.
Aidan MacDonald
2022-01-09 c62c323ebc: axp-pmu: adc refactor

Remove the battery power ADC since it's not used right now, and seems to fluctuate too rapidly to be of much use.
firmware/drivers/axp-pmu.c [diff]
firmware/export/axp-pmu.h [diff]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2022-01-09 b490f08b7c: axp-pmu: remove chip ID code

It's useless except to developers, who can easily add code somewhere to print the ID.
firmware/drivers/axp-pmu.c [diff]
Aidan MacDonald
2022-01-09 eee8243102: axp-pmu: clean up charge current setting
firmware/drivers/axp-pmu.c [diff]
firmware/export/axp-pmu.h [diff]
Aidan MacDonald
2022-01-09 eaee5e7339: Revert "AXP PMU rewrite (again)"

This caused LCD problems on the ErosQ, where the screen would go white until being put through a sleep/wake cycle. The exact reason for this isn't obvious, but the problem didn't exist prior to the AXP driver rewrite.

The two dependent changes,

42999913ba - x1000: Increase USB current limit to 500 mA at all times 90dd2f84a9 - x1000: Correctly limit USB charging current

ended up bringing the USB charging situation back to where it was prior to the rewrite, so the cleanest option is to revert the whole lot.

This reverts commit 42999913ba3a76221fceb04b1f935ed4e0e71476. This reverts commit 90dd2f84a9174c38dbfb07d582ec6ee7697b1939. This reverts commit 2d891439623bb76d38b98202ca5f3eea3c01c5f0.
firmware/SOURCES [diff]
firmware/drivers/axp-pmu.c [new]
firmware/drivers/axp192.c [deleted]
firmware/export/axp-pmu.h [new]
firmware/export/axp192-defs.h [deleted]
firmware/export/axp192.h [deleted]
firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/button-shanlingq1.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2022-01-09 8f063d49c2: ImageViewer: Fix FS #13329 (GIF File handle/memory leaks)
apps/plugins/imageviewer/gif/gif.c [diff]
apps/plugins/imageviewer/gif/gif_decoder.c [diff]
apps/plugins/imageviewer/gif/gif_decoder.h [diff]
Christian Soffke
2022-01-09 f379e1dbb3: ImageViewer: Fix GIF Decoder progress bar
apps/plugins/imageviewer/gif/gif_decoder.c [diff]
Christian Soffke
2022-01-09 18358ed541: ImageViewer: Fix gifs sporadically crashing on targets

ensure 32bit alignment
apps/plugins/imageviewer/gif/gif.c [diff]
Christian Soffke
2022-01-09 fbdcfca085: ImageViewer: Improve smoothness of animated gif playback

Don't disable grayscale overlay, don't show "resize" messages between frames and and don't clear display unless actually necessary
apps/plugins/imageviewer/gif/gif.c [diff]
apps/plugins/imageviewer/imageviewer.c [diff]
Christian Soffke
2022-01-09 3adeae2026: ImageViewer: Fix crash when zooming on grayscale devices

lcd_update was called while the grayscale overlay was running

regression, apparently introduced by 0ceaff2

(only reproducible on target, not in Simulator)
apps/plugins/imageviewer/imageviewer.c [diff]
Christian Soffke
2022-01-08 f1ddd6f014: ErosQ Native: Fix Color Chooser keymap context

Was defaulting to standard, where we don't have increment or decrement defined.
apps/keymaps/keymap-erosq.c [diff]
Dana Conrad
2022-01-05 131497d786: PictureFlow: Don't sync playlist after every file

Since we manually do it later, syncing after every file is unnecessary and can make the audio queue overflow
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-05 ea738e03d0: Printcell.c fix list item scrolling behavior

make every item in a selection scroll when no columns are selected otherwise title & currently selected column will be the only scrolling lines
apps/plugins/lib/printcell_helper.c [diff]
William Wilgus
2022-01-04 122ce0089a: PictureFlow: Don't insert tracks if track list not available
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-04 de8ee6c9e9: PictureFlow: Switch between albums from track view

Prev/next buttons on iPods or Fiio M3k can now be used to select another album without having to return to the albums view first. Scroll wheel/strip handles scrolling up and down in the track list as before.

Other targets probably have the necessary buttons for this, so the keymap can be extended in the future (same goes for alphabetic browsing)

Also prevents queue overflow and handles failure case for track list tagcache retrieval.
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-04 d183959676: PictureFlow: Show track list loading message

When tagcache or storage are busy, it can take a few seconds for the list to appear. Meanwhile, the screen used to be either blank or the cover was left suspended in mid-animation, if the animation was skipped.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-04 dded97be34: PictureFlow: Fix buffer overflow

create_track_index appears to have relied on buflib_buffer_out returning a certain amount of space without checking that it was actually available. In at least one test case, as little as 16 bytes were returned, leading to a buffer overflow and later a segfault.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2022-01-04 e3b8b7fa80: PictureFlow: Utilize "Current Playlist" menu (+ GS fixes)

When appending tracks, they were always inserted last. You can now choose from the usual options offered by the "Current Playlst" context menu to queue or to insert tracks at the requested position. The splash after appending that forced you to wait for 2s has been eliminated.

Also fixes crashes on targets that use the grey_core lib if a splash showed up when playback was started, e.g. LANG_PLAYLIST_CONTROL_ACCESS_ERROR, or when PictureFlow quit.
apps/onplay.c [diff]
apps/onplay.h [diff]
apps/playlist_viewer.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/shortcuts.c [diff]
Christian Soffke
2022-01-04 bfe3dac3ba: printcell_helper.c bugfix scrollbar spacing

when the scrollbar was on left and number of items was < nb_lines the spacing between title and items was off by sb_width

selected item no longer draws separators when no colums are selected
apps/plugins/lib/printcell_helper.c [diff]
William Wilgus
2022-01-02 cbb57fe714: rbutil: allow checking bootloader installer capabilities

Instead of checking for certain hardcoded strings, fetch the actual capability bitmask by instantiating an installer and querying it.
utils/rbutilqt/base/bootloaderinstallbase.h [diff]
utils/rbutilqt/base/bootloaderinstallhelper.cpp [diff]
utils/rbutilqt/base/bootloaderinstallhelper.h [diff]
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
utils/rbutilqt/base/bootloaderinstallsansa.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
Aidan MacDonald
2022-01-02 42999913ba: x1000: Increase USB current limit to 500 mA at all times

The 100 mA USB current limit added in commit 90dd2f84a9 is a problem when booting with a completely dead battery. Often 100 mA isn't enough to power the player, never mind charge the battery, so revert to the old behavior of only limiting charge current.

Given that the original firmware on these devices isn't following the USB spec to the letter, it's probably not worth trying to make Rockbox do so unless and until it causes a real problem - which hasn't happened yet.
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2022-01-02 83c2398384: x1000: Fix USB connection problems in bootloader

This problem actually had nothing to do with USB boot; it's because the cable is plugged in when the USB mode menu item is selected. The USB thread detected the select button press and went into charge-only mode (as it usually does when you hold down a key in Rockbox). This is fixed by having the USB thread ignore most keys in the bootloader.

USB connect events are delivered via the button queue, and there were also cases where the connection could be missed if the event happened within another UI screen. This should also be fixed.
bootloader/x1000.c [diff]
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
Aidan MacDonald
2022-01-02 af872b54ec: powermgmt: Bugfixes to time estimation code

Guard against division by zero and prevent the time_now value from going negative if the counter drops below zero.
firmware/powermgmt.c [diff]
Aidan MacDonald
2022-01-02 a7703e4926: gui lists add callback for owner drawn items

allow the guts of gui_sync_list to be used with owner drawn items

WIP

printcell_helper--

goal: allow data to be displayed in a spreadsheet format with an easy to use interface

printcell_set_columns(gui_synclist, title, icon) sets title and calculates cell widths each column is identified by '$' character ex 3 columns title = "Col1$Col2$Col3" also accepts $*WIDTH$ ex 3 columns varying width title = "$*64$Col1$*128$Col2$Col3 printcell_enable(gui_synclist, enable) sets the printcell function enabled

After setting the columns and enabling the printcell function items can be added to the list like normal column items are supplied delimited by '$' ex item = "Item1$item2$item3" they will be placed in cells defined by set_columns and scroll if the cell is too small

--Fixed for 1 bit & 2 bit displays
apps/gui/bitmap/list.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
apps/plugins/lib/SOURCES [diff]
apps/plugins/lib/printcell_helper.c [new]
apps/plugins/lib/printcell_helper.h [new]
apps/plugins/rb_info.c [diff]
William Wilgus
2022-01-02 edc68b0657: Solitaire: Fix Quit option with no saved games

Selecting "Quit" would start the game instead of quitting if no games had previously been saved.
apps/plugins/solitaire.c [diff]
Christian Soffke
2022-01-02 14a5355278: Manual: fix FS #12603

"root menu order" item missing from "Config file options" chapter
manual/appendix/config_file_options.tex [diff]
Christian Soffke
2022-01-02 abfee36ce0: PictureFlow: enable theme in settings menus

Submenus for adjusting settings were previously left unthemed
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-29 025f780685: Update .gitignore for rbutil/ -> utils/ merge
.gitignore [diff]
Aidan MacDonald
2021-12-28 bbd1056afb: themeeditor: Fix dmg deploy steps.

- Fix binary name in Info.plist.
- Run dmgbuild as Python module, in some cases it isn't available directly.
- Add missing dmgbuild configuration for themeeditor.
utils/cmake/deploy.cmake [diff]
utils/themeeditor/Info.plist [diff]
utils/themeeditor/dmgbuild.cfg [new]
Dominik Riebeling
2021-12-28 3d983ad3a1: themeeditor: Create MacOS AppBundle / Win32 GUI application.

cmake needs to know about this, otherwise we'll only get an executable.
utils/themeeditor/CMakeLists.txt [diff]
Dominik Riebeling
2021-12-28 875fcc7daf: themeeditor: Fix cmake Qt major version.

Use the correct variable.
utils/themeeditor/CMakeLists.txt [diff]
Dominik Riebeling
2021-12-28 c055b5e933: rbutil: Add data tags to data driven unit tests.

Make tests implemented as data driven tests show a sensible test data tag value, so test can get identified more easily.
utils/rbutilqt/test/test-compareversion.cpp [diff]
utils/rbutilqt/test/test-playerbuildinfo.cpp [diff]
Dominik Riebeling
2021-12-28 0c8f539182: rbutil: Auto-discover tests with cmake.
utils/rbutilqt/CMakeLists.txt [diff]
Dominik Riebeling
2021-12-28 f37a917e9a: cmake: Disable QtTest discovery when cross compiling.
utils/cmake/QtTest.cmake [diff]
Dominik Riebeling
2021-12-28 c1ad915055: cmake: Add QtTest test discovery module.

Allow discivery of the QtTest based unit test. Taken from https://github.com/ocroquette/cmake-qtest-discovery
utils/cmake/QtTest.cmake [new]
utils/cmake/QtTestAddTests.cmake [new]
Dominik Riebeling
2021-12-28 f53f1fbafa: rbutil: Fix some more issues found by clazy.
utils/rbutilqt/base/httpget.h [diff]
utils/rbutilqt/base/mspackutil.h [diff]
utils/rbutilqt/base/utils.cpp [diff]
utils/rbutilqt/base/ziputil.h [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/progressloggergui.h [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/sysinfo.cpp [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
utils/rbutilqt/themesinstallwindow.h [diff]
Dominik Riebeling
2021-12-28 7dffbd84af: Playlist Viewer: Add Track Info

Adds a command for showing track info to the Playlist Viewer's context menu, which brings up the same screen used by the WPS for currently playing tracks.
apps/gui/wps.c [diff]
apps/onplay.c [diff]
apps/playlist_viewer.c [diff]
apps/screens.c [diff]
apps/screens.h [diff]
Christian Soffke
2021-12-28 e8b9123205: Database: show song's album in PictureFlow

Adds a 'PictureFlow' command to database context menus for quickly bringing up the album for a song in PictureFlow.
apps/onplay.c [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/plugins/viewers.config [diff]
Christian Soffke
2021-12-28 7d59bbd170: Database: Fix selection being reset

Consistent with (preferable) behavior of file browser after selecting an item for playback
apps/tagtree.c [diff]
Christian Soffke
2021-12-28 96cfe329a6: powermgmt: Better time estimation

This method, while far from perfect, is able to make use of real-time battery usage information and updates frequently in fine-grained increments. This should make time estimates a lot more useful than they previously were.
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
Aidan MacDonald
2021-12-28 90dd2f84a9: x1000: Correctly limit USB charging current

The way this was done before was wrong - limiting the charge current is not enough since the device will draw additional power to run. Use the AXP192's vbus current limit control to stay compliant with the USB specification.
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2021-12-28 2d89143962: AXP PMU rewrite (again)

I noticed a few mistakes in the old driver code and it was in need of an overhaul anyway... I decided to scale things back, simplify the code and remove most of the debug menus, netting a nice code size savings.

One new feature is an advanced debug menu which is accessible by recompiling the code with AXP_EXTRA_DEBUG. It adds quite a bit of code size and isn't useful other than for development so it must be manually enabled by editing the source.
firmware/SOURCES [diff]
firmware/drivers/axp-pmu.c [deleted]
firmware/drivers/axp192.c [new]
firmware/export/axp-pmu.h [deleted]
firmware/export/axp192-defs.h [new]
firmware/export/axp192.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/button-shanlingq1.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2021-12-28 b774699560: themeeditor: Remove qmake project files.

It is now part of building with cmake.
utils/themeeditor/themeeditor.pro [deleted]
Dominik Riebeling
2021-12-28 3e2a7a56c0: rbutil: Remove qmake project files.

To build it configure with cmake from utils/ folder.
utils/ipodpatcher/ipodpatcher.pro [deleted]
utils/rbutil.pro [deleted]
utils/rbutilqt/rbutilqt.pri [deleted]
utils/rbutilqt/rbutilqt.pro [deleted]
utils/rbutilqt/test/test-compareversion.pro [deleted]
utils/rbutilqt/test/test-httpget.pro [deleted]
utils/rbutilqt/test/test-playerbuildinfo.pro [deleted]
utils/rbutilqt/test/test-rockboxinfo.pro [deleted]
utils/sansapatcher/sansapatcher.pro [deleted]
Dominik Riebeling
2021-12-27 1ddc5a202d: themeeditor: Convert to cmake.
utils/CMakeLists.txt [diff]
utils/themeeditor/CMakeLists.txt [new]
Dominik Riebeling
2021-12-27 36cb0d4050: themeeditor: Add svg application icon and desktop file.
utils/themeeditor/RockboxThemeEditor.desktop [new]
utils/themeeditor/resources/rbthemeeditor.svg [new]
Dominik Riebeling
2021-12-27 2ecbc18535: rbutil: cmake: Make linuxdeploy download a global target.

That way we won't get duplicated targets when the deploy function is used for multiple targets.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2021-12-27 67942629cf: rbutil: Explicitly enable AppImage qt deploy plugin.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2021-12-26 88a50ab104: rbutil: Change MacOS dmgbuild to use plistlib.

We're not dealing with binary plist files, to biplist is not the one we want. Also, plistlib is part of Python.
utils/cmake/deploy.cmake [diff]
utils/rbutilqt/dmgbuild.cfg [diff]
Dominik Riebeling
2021-12-26 5999b4f791: rbutil: Fix cmake deploy function paths.

Update scripts paths with the split-up setup.
utils/cmake/deploy.cmake [diff]
Dominik Riebeling
2021-12-26 241d478ce9: rbutil: Replace QRegExp with QRegularExpression.

More updating for Qt6 compatibility.
utils/rbutilqt/base/talkfile.cpp [diff]
utils/rbutilqt/base/talkgenerator.cpp [diff]
Dominik Riebeling
2021-12-26 1ad4faa334: rbutil: Modernize connect() calls.

Auto fixed by clazy.
utils/rbutilqt/configure.cpp [diff]
utils/rbutilqt/createvoicewindow.cpp [diff]
utils/rbutilqt/gui/backupdialog.cpp [diff]
utils/rbutilqt/gui/changelog.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/installtalkwindow.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
utils/rbutilqt/uninstallwindow.cpp [diff]
Dominik Riebeling
2021-12-26 9f3d6e47e7: rbutil: Remove generated header from giversion interface target.

cmake on Windows doesn't like this, and it's not necessary.
utils/CMakeLists.txt [diff]
Dominik Riebeling
2021-12-26 80c0268c7a: rbutil: Make test compile with Qt6.
utils/rbutilqt/test/test-httpget.cpp [diff]
Dominik Riebeling
2021-12-26 35bc4590ae: rbutil: Remove ProgressLogger interface class.

Since we're using signals to connect to the Logger we don't need an interface class, and the only thing still used was the log level enum. Put those values in a dedicated header instead.
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/base/bootloaderinstallbase.h [diff]
utils/rbutilqt/base/bootloaderinstallfile.h [diff]
utils/rbutilqt/base/bootloaderinstallmi4.h [diff]
utils/rbutilqt/base/mspackutil.cpp [diff]
utils/rbutilqt/base/progressloggerinterface.h utils/rbutilqt/base/progressloglevels.h [rename]
utils/rbutilqt/base/talkfile.h [diff]
utils/rbutilqt/base/talkgenerator.h [diff]
utils/rbutilqt/base/uninstall.h [diff]
utils/rbutilqt/base/voicefile.h [diff]
utils/rbutilqt/base/zipinstaller.h [diff]
utils/rbutilqt/base/ziputil.cpp [diff]
utils/rbutilqt/progressloggergui.cpp [diff]
utils/rbutilqt/progressloggergui.h [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
Dominik Riebeling
2021-12-25 01e245417e: rbutil: Fix various issues found by clazy.
utils/rbutilqt/base/system.cpp [diff]
utils/rbutilqt/base/talkfile.cpp [diff]
utils/rbutilqt/base/talkgenerator.cpp [diff]
utils/rbutilqt/base/ttsfestival.cpp [diff]
utils/rbutilqt/base/ttssapi.cpp [diff]
utils/rbutilqt/base/utils.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/test/test-httpget.cpp [diff]
Dominik Riebeling
2021-12-25 0768705545: rbutil: Fix invalid access on error in test.
utils/rbutilqt/test/test-httpget.cpp [diff]
Dominik Riebeling
2021-12-25 c753d31549: rbutil: Remove unused variable from test.
utils/rbutilqt/test/test-rockboxinfo.cpp [diff]
Dominik Riebeling
2021-12-25 6ff75b475c: rbutil: Modernize connect() calls.

Auto fixed by clazy.
utils/rbutilqt/base/bootloaderinstallimx.cpp [diff]
utils/rbutilqt/configure.cpp [diff]
utils/rbutilqt/createvoicewindow.cpp [diff]
utils/rbutilqt/encttscfggui.cpp [diff]
utils/rbutilqt/gui/backupdialog.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/installtalkwindow.cpp [diff]
utils/rbutilqt/preview.cpp [diff]
utils/rbutilqt/progressloggergui.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/test/test-httpget.cpp [diff]
utils/rbutilqt/themesinstallwindow.cpp [diff]
utils/rbutilqt/uninstallwindow.cpp [diff]
Dominik Riebeling
2021-12-25 dce2ccdd96: rbutil: Remove unused mspack source to fix warning.

We don't need this file, and the implementations are stubs, causing a compile warning. Remove it from the build.
utils/rbutilqt/CMakeLists.txt [diff]
Dominik Riebeling
2021-12-25 afe0e18113: mkamsboot: Fix a warning.
utils/mkamsboot/mkamsboot.c [diff]
Dominik Riebeling
2021-12-25 eb8dc75d38: rbutil: Create git version information at build time.
utils/CMakeLists.txt [diff]
utils/cmake/gitversion.cmake [new]
utils/rbutilqt/CMakeLists.txt [diff]
utils/rbutilqt/version.h [diff]
Dominik Riebeling
2021-12-25 6783b2c8a7: rbspeex: Fix unused variable warning.
tools/rbspeex/rbspeex.c [diff]
Dominik Riebeling
2021-12-25 e9ef7f0dd3: rbutil: Split out rbutilqt parts into separate cmake list.
utils/CMakeLists.txt [diff]
utils/rbutilqt/CMakeLists.txt [new]
Dominik Riebeling
2021-12-25 c979717b80: rbutil: Fix logger segfault on application exit.

Getting the values from a QMultiMap() returns a list, but not the same on consecutive calls. Thus calling it twice to get the iterators will yield different lists, causing the iterator to fail.

Fixes a segfault when destructing the logger.
utils/rbutilqt/logger/src/Logger.cpp [diff]
Dominik Riebeling
2021-12-25 774b35cccf: rbutil: Deploy support in cmake.

Add a "deploy" target that will create a distributable file.

- Linux: AppImage.
- Windows: zip file.
- MacOS: dmg.
utils/CMakeLists.txt [diff]
utils/cmake/deploy.cmake [new]
utils/cmake/download.cmake [new]
utils/rbutilqt/dmgbuild.cfg [diff]
Dominik Riebeling
2021-12-25 4eb3f05042: rbutil: Increase test timeout value for HttpGet tests.

The test timeout is used to abort the tests if something goes wrong and should not occur during normal test run. On some systems the current value is too small, causing a timeout and thus test failure before HttpGet responds. Increasing the timeout fixes this.
utils/rbutilqt/test/test-httpget.cpp [diff]
Dominik Riebeling
2021-12-25 f2798c225a: rbutil: Simplify reading rockbox-info.txt.

Simplify, and replace use of QRegExp with QRegularExpression for Qt6 compatibility.

Also fix the test running on Windows. RockboxInfo constructs the filename from path and filename, so we cannot pass an empty path, since that results in an invalid path. On Linux / MacOS this works only because we use an absolute path.
utils/rbutilqt/base/rockboxinfo.cpp [diff]
utils/rbutilqt/test/test-rockboxinfo.cpp [diff]
Dominik Riebeling
2021-12-25 dc677208d0: rbutil: Fix unit tests on Windows.
utils/rbutilqt/test/stubs/stubs-compareversion.cpp [diff]
Dominik Riebeling
2021-12-25 3d6d186d2e: rbutil: Initial cmake support.

Rewrite in cmake, and include all necessary libs. This removes calling separate Makefiles which is rather error-prone on non-Linux systems.
utils/CMakeLists.txt [new]
Dominik Riebeling
2021-12-24 f3a54a7c22: rbutil: Put translation qrc next to translations.

That way we don't need to put paths in the file, and will help with cmake support later.
utils/rbutilqt/lang/rbutilqt-lang.qrc [new]
utils/rbutilqt/rbutilqt-lang.qrc [deleted]
utils/rbutilqt/rbutilqt.pri [diff]
Dominik Riebeling
2021-12-24 2fdc056fee: rbutil: Use https URLs in Changelog links.
utils/rbutilqt/gui/changelog.cpp [diff]
Dominik Riebeling
2021-12-24 9e28474e47: rbutil: Replace QRegExp with QRegularExpression.

The former is not part of Qt6 anymore, while the latter has been introduced with Qt5. We don't support Qt4 anymore, so move to QRegularExpression.
utils/rbutilqt/base/bootloaderinstallipod.cpp [diff]
utils/rbutilqt/base/bootloaderinstallsansa.cpp [diff]
utils/rbutilqt/base/talkgenerator.cpp [diff]
utils/rbutilqt/base/ttsfestival.cpp [diff]
utils/rbutilqt/base/utils.cpp [diff]
utils/rbutilqt/configure.cpp [diff]
utils/rbutilqt/gui/changelog.cpp [diff]
utils/rbutilqt/gui/selectiveinstallwidget.cpp [diff]
utils/rbutilqt/installtalkwindow.cpp [diff]
utils/rbutilqt/rbutilqt.cpp [diff]
utils/rbutilqt/sysinfo.cpp [diff]
Dominik Riebeling
2021-12-24 72071d108c: rbutil: Remove unnecessary include from logger.
utils/rbutilqt/logger/src/Logger.cpp [diff]
Dominik Riebeling
2021-12-24 c876d3bbef: rbutil: Merge rbutil with utils folder.

rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them.

This also allows other utils to easily use libtools.make without the need to navigate to a different folder.
rbutil/bspatch/LICENSE utils/bspatch/LICENSE [rename]
rbutil/bspatch/Makefile utils/bspatch/Makefile [rename]
rbutil/bspatch/bspatch.c utils/bspatch/bspatch.c [rename]
rbutil/bspatch/bspatch.h utils/bspatch/bspatch.h [rename]
rbutil/bspatch/main.c utils/bspatch/main.c [rename]
rbutil/bzip2/LICENSE utils/bzip2/LICENSE [rename]
rbutil/bzip2/Makefile utils/bzip2/Makefile [rename]
rbutil/bzip2/blocksort.c utils/bzip2/blocksort.c [rename]
rbutil/bzip2/bzlib.c utils/bzip2/bzlib.c [rename]
rbutil/bzip2/bzlib.h utils/bzip2/bzlib.h [rename]
rbutil/bzip2/bzlib_private.h utils/bzip2/bzlib_private.h [rename]
rbutil/bzip2/compress.c utils/bzip2/compress.c [rename]
rbutil/bzip2/crctable.c utils/bzip2/crctable.c [rename]
rbutil/bzip2/decompress.c utils/bzip2/decompress.c [rename]
rbutil/bzip2/huffman.c utils/bzip2/huffman.c [rename]
rbutil/bzip2/randtable.c utils/bzip2/randtable.c [rename]
rbutil/chinachippatcher/Makefile utils/chinachippatcher/Makefile [rename]
rbutil/chinachippatcher/chinachip.c utils/chinachippatcher/chinachip.c [rename]
rbutil/chinachippatcher/chinachip.h utils/chinachippatcher/chinachip.h [rename]
rbutil/chinachippatcher/main.c utils/chinachippatcher/main.c [rename]
rbutil/e200rpatcher/Makefile utils/e200rpatcher/Makefile [rename]
rbutil/e200rpatcher/README utils/e200rpatcher/README [rename]
rbutil/e200rpatcher/e200rpatcher.c utils/e200rpatcher/e200rpatcher.c [rename]
rbutil/e200rpatcher/e200rpatcher.manifest utils/e200rpatcher/e200rpatcher.manifest [rename]
rbutil/e200rpatcher/e200rpatcher.rc utils/e200rpatcher/e200rpatcher.rc [rename]
rbutil/ibassoboot/jni/Android.mk utils/ibassoboot/jni/Android.mk [rename]
rbutil/ibassoboot/jni/chooser.bmp utils/ibassoboot/jni/chooser.bmp [rename]
rbutil/ibassoboot/jni/ibassodualboot.c utils/ibassoboot/jni/ibassodualboot.c [rename]
rbutil/ibassoboot/jni/qdbmp.c utils/ibassoboot/jni/qdbmp.c [rename]
rbutil/ibassoboot/jni/qdbmp.h utils/ibassoboot/jni/qdbmp.h [rename]
...and 464 more files.
Dominik Riebeling
2021-12-24 6c6f0757d7: PictureFlow: Show background cache building progress

There was no easy way to see how far along PictureFlow was in building the art cache, once background scanning had commenced.

PF now uses the screen area normally used by the FPS meter to show completed percentage until building the art cache has finished.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-24 f4fbc1bceb: tagtree: Support user override config file

Allow users to create an alternative tagnavi config file named
"tagnavi_user.config" in the .rockbox directory. If present, it will be used instead of the default tagnavi.config, allowing the default menu to be completely redefined.

This makes it much easier to maintain customizations which remove or modify parts of the default config -- since the default config is shipped in the Rockbox zips, a customized tagnavi.config would have to be saved with manual intervention on each & every update.
apps/tagnavi.config [diff]
apps/tagtree.c [diff]
Aidan MacDonald
2021-12-24 6b5c811d1c: PictureFlow: reset idle timer when art cache is being built

- creating the album index and art cache can take longer than what the idle poweroff timer is set to, so make sure to reset it periodically

- when finished, make sure progress is stored to disk immediately, so it isn't lost on idle poweroff
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-24 d04804b6ff: Root menu: prevent infinite loop trying to exit plugin

Rockbox could enter into an infinite loop when last_screen and next_screen were both GO_TO_PREVIOUS, which happened when trying to quit PictureFlow in the following scenario:

1) start playback from PictureFlow plugin 2) return (or be returned) to WPS directly 3) wait for playback to finish and to be returned to PF plugin
apps/root_menu.c [diff]
Christian Soffke
2021-12-24 747c8d5ea4: Remove dead code/documentation/comments
apps/gui/statusbar.c [diff]
apps/gui/statusbar.h [diff]
apps/onplay.c [diff]
apps/plugin.h [diff]
docs/PLUGIN_API [diff]
Christian Soffke
2021-12-23 22d0c4da70: Revert "powermgmt: Remove an unnecessary function"

This reverts commit 6ff1a935b923b69d34d18e68af612297912c806b.

Reason: it created a mismatch between the displayed voltage and percent since the voltage was unfiltered but percentage was based off the filtered voltage.
apps/debug_menu.c [diff]
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
firmware/target/coldfire/debug-coldfire.c [diff]
Aidan MacDonald
2021-12-23 1a313dc9bf: Report battery current on all X1000 native targets

This allows battery run time to be calculated from the actual battery usage on the FiiO M3K and Shanling Q1. This isn't very good for the time being and the estimate tends to go all over the place due to small variations in current or voltage.

The Eros Q can support this feature as well, but since it already has fixed estimates defined and the quality of the "real time" estimate is low I am not enabling it there.
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/power-shanlingq1.c [diff]
Aidan MacDonald
2021-12-23 fc678bd001: battery_bench: Log battery current information

Works on targets supporting CURRENT_MEASURE.
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/battery_bench.c [diff]
Aidan MacDonald
2021-12-23 9ae983068a: Display battery current in debug menu
apps/debug_menu.c [diff]
Aidan MacDonald
2021-12-23 ad05c872fe: powermgmt: Add battery current measurement

This allows targets to report the actual discharging or charging current if they are able to.
firmware/export/config.h [diff]
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
uisimulator/common/powermgmt-sim.c [diff]
Aidan MacDonald
2021-12-23 923f92cb12: Fix yellow from 4506f2b58d
firmware/powermgmt.c [diff]
Aidan MacDonald
2021-12-23 4506f2b58d: powermgmt: Refactor battery measurement code

I've tried to clean up cruft and clarify what's being done, prior to adding new features. The behavior should be unchanged.
firmware/powermgmt.c [diff]
uisimulator/common/powermgmt-sim.c [diff]
Aidan MacDonald
2021-12-18 d6faef8205: FS #13330: Updated Dutch translation (Issa Beganović)
apps/lang/nederlands.lang [diff]
Solomon Peachy
2021-12-18 bdef4fc80d: FS #13228: More Turkish translation updates (Selami Dinçer)

This one is focused on corrections to existing strings
apps/lang/turkce.lang [diff]
Solomon Peachy
2021-12-17 ded161e81a: FS #13327: Further Turkish translation updates (Selami Dinçer)

(Continuing to fix strings that were the same as English)
apps/lang/turkce.lang [diff]
Solomon Peachy
2021-12-16 0300f62bf1: FS #13326: Further Turkish translation updates (Selami Dinçer)
apps/lang/turkce.lang [diff]
Solomon Peachy
2021-12-16 6a6f5fbd6c: Voices: Enable the generation of turkish voice files.
tools/builds.pm [diff]
Solomon Peachy
2021-12-16 f496e1fb97: FS #13325: Further Turkish translation updates (Selami Dinçer)

Making a big dent in the "same as English" list
apps/lang/turkce.lang [diff]
Solomon Peachy
2021-12-16 b53d2bc432: languages: Fix RTL language file generation

The 'rtl' flags for Arabic and Hebrew was inadvertantly deleted in 7ff3c94e1 (over a year ago, in November 2020!) but it's actually been broken since the introduction of 'updatelang', in 2305966d (July 2020)

The fix here is to change the 'RTL' flag from an <options> section in the language file to a comment in the header. It's not as pure in a design sense but it makes for a much cleaner implementation.

I may further revamp this by making the 'RTL' flag into an explicit LANG_xxx string
apps/lang/arabic.lang [diff]
apps/lang/hebrew.lang [diff]
tools/genlang [diff]
Solomon Peachy
2021-12-15 651853f5df: FS #13324: Updated Turkish translation (Selami Dinçer)
apps/lang/turkce.lang [diff]
docs/CREDITS [diff]
Solomon Peachy
2021-12-14 f996f4ed70: FS13323: Updated Italian translation (Alessio Lenzi)
apps/lang/italiano.lang [diff]
Solomon Peachy
2021-12-11 75d615e818: Fix yellow from 69d08be0
apps/lang/czech.lang [diff]
apps/lang/english-us.lang [diff]
apps/lang/english.lang [diff]
apps/lang/italiano.lang [diff]
apps/lang/nederlands.lang [diff]
apps/lang/polski.lang [diff]
apps/lang/russian.lang [diff]
apps/lang/slovak.lang [diff]
apps/lang/srpski.lang [diff]
Aidan MacDonald
2021-12-11 69d08be083: Additional Single Mode options

In addition to the existing behavior of pausing after each song, this adds options to pause after playing current:

Album, Album Artist, Artist, Composer, Grouping / Work, or Genre.

Allows you, for example, to only listen to the remaining movements of a classical work without having to purge your playlist of any upcoming songs.
apps/pcmbuf.c [diff]
apps/playback.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/playback_options.tex [diff]
Christian Soffke
2021-12-11 8060c79775: allow sim to shutdown while 'charging'
firmware/export/config.h [diff]
William Wilgus
2021-12-11 68ed534f83: Automated translation fixups for a couple of strings
apps/lang/arabic.lang [diff]
apps/lang/basque.lang [diff]
apps/lang/bulgarian.lang [diff]
apps/lang/catala.lang [diff]
apps/lang/chinese-simp.lang [diff]
apps/lang/chinese-trad.lang [diff]
apps/lang/czech.lang [diff]
apps/lang/dansk.lang [diff]
apps/lang/deutsch.lang [diff]
apps/lang/english-us.lang [diff]
apps/lang/espanol.lang [diff]
apps/lang/finnish.lang [diff]
apps/lang/francais.lang [diff]
apps/lang/galego.lang [diff]
apps/lang/greek.lang [diff]
apps/lang/hebrew.lang [diff]
apps/lang/hrvatski.lang [diff]
apps/lang/italiano.lang [diff]
apps/lang/japanese.lang [diff]
apps/lang/korean.lang [diff]
apps/lang/latviesu.lang [diff]
apps/lang/lietuviu.lang [diff]
apps/lang/magyar.lang [diff]
apps/lang/nederlands.lang [diff]
apps/lang/norsk-nynorsk.lang [diff]
apps/lang/norsk.lang [diff]
apps/lang/polski.lang [diff]
apps/lang/portugues-brasileiro.lang [diff]
apps/lang/portugues.lang [diff]
apps/lang/romaneste.lang [diff]
...and 11 more files.
Solomon Peachy
2021-12-11 21866949dc: Update english-us "translation"
apps/lang/english-us.lang [diff]
Solomon Peachy
2021-12-11 06f98fa2e7: FS #13322: Updated Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
2021-12-11 e05db7304e: Update Chinese translations

Lifted from the Rockbox-RCC github repo, plus several cleanups by myself.
apps/lang/chinese-simp.lang [diff]
apps/lang/chinese-trad.lang [diff]
Solomon Peachy
2021-12-11 fde78a0c8d: lang: Use consistent capitalization for button names
apps/lang/english.lang [diff]
Solomon Peachy
2021-12-11 dcac2c616f: Add setting for numeric list sort order

The sort order of numeric lists can now be changed with the new "List Order" setting. It defaults to ascending for most scrollwheel targets and descending for all others, matching the old hardcoded behavior.
apps/gui/option_select.c [diff]
apps/gui/option_select.h [diff]
apps/lang/english.lang [diff]
apps/menus/display_menu.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/display_options.tex [diff]
Aidan MacDonald
2021-12-10 a3684e090e: m3k simulator: remove white border
firmware/target/hosted/sdl/sim-ui-defines.h [diff]
uisimulator/bitmaps/UI-fiiom3k.bmp [diff]
uisimulator/buttonmap/fiio-m3k.c [diff]
Christian Soffke
2021-12-10 f1eb0483d6: m3k simulator: add screen bezel
firmware/target/hosted/sdl/sim-ui-defines.h [diff]
uisimulator/bitmaps/UI-fiiom3k.bmp [diff]
uisimulator/buttonmap/fiio-m3k.c [diff]
Christian Soffke
2021-12-10 f78a0e5230: Manual (HTML): fix image aspect ratio and size
manual/appendix/file_formats.tex [diff]
manual/configure_rockbox/playback_options.tex [diff]
manual/configure_rockbox/sound_settings.tex [diff]
manual/preamble.tex [diff]
manual/rockbox_interface/main.tex [diff]
Christian Soffke
2021-12-10 694f929a99: Credits plugin: use black background

Sets the lcd background color to black and foreground color to white when displaying the 16bit logo, so that it always blends in with the background regardless of theme colors.
apps/plugins/credits.c [diff]
Christian Soffke
2021-12-10 938395be72: Update US English "translation"
apps/lang/english-us.lang [diff]
Solomon Peachy
2021-12-10 fb339a5a09: FS #13220: Updated Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
2021-12-09 43d811073a: Credits plugin: whitespace fixes
apps/plugins/credits.c [diff]
Christian Soffke
2021-12-09 7e0e4fe888: Add setting to hide shutdown message

Also keeps display from lighting up before shutdown, which reduces distractions, especially at night and when the sleep timer is used by allowing the screen to remain dark.
apps/lang/english.lang [diff]
apps/menus/settings_menu.c [diff]
apps/misc.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
firmware/backlight.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/startup_shutdown_options.tex [diff]
Christian Soffke
2021-12-09 5433ea5405: random_playlist.lua make index more sparse

The name of the game here is to load the database file without taking over the audio buffer.

5mb database file will now successfully load

added an option to save playlist directly to disk and bypass the rb builtin function completely however if you choose play the playlist will be loaded back from the disk into the inram dynamic playlist
apps/plugins/lua_scripts/random_playlist.lua [diff]
William Wilgus
2021-12-09 8c88d5c5e2: playlist.c remove panic from OOM conditions

the splash suffices as warning let the calling code decide what to do with it

everything I saw calling expected failure with a -1 return so it shouldn't cause any issue removing the panic
apps/playlist.c [diff]
William Wilgus
2021-12-06 221e8752cc: plugin.h & lua add playlist_insert_playlist

having issues running lua and loading a playlist
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/lua/rocklib.c [diff]
apps/plugins/lua_scripts/random_playlist.lua [diff]
William Wilgus
2021-12-05 f02cd18ad0: powermgmt: Refactor battery current estimation

Create a new battery_current() function to report the the battery's charging/discharging current. Move the old runcurrent() implementation into it and clean up some of the related defines.
firmware/export/config/iaudiox5.h [diff]
firmware/export/config/ipod6g.h [diff]
firmware/export/config/mrobe500.h [diff]
firmware/export/config/samsungypr0.h [diff]
firmware/export/config/samsungypr1.h [diff]
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
Aidan MacDonald
2021-12-05 8a8dfa0e52: random_playlist.lua bugfix

removing trackks after create appears to cause crashes removing the playlist appears to be sufficient to prevent append to the currently saved random_playlist.m3u8

added yield on screent update, since we have no sleep this could be an issue
apps/plugins/lua_scripts/random_playlist.lua [diff]
William Wilgus
2021-12-05 0e985a4461: settings: fix a confusing indentation and add missing whitespaces
apps/settings_list.c [diff]
Wolfram Sang
2021-12-05 6ff1a935b9: powermgmt: Remove an unnecessary function

Remove battery_read_info() which is a simple wrapper function only used by debug screens. Use the polling functions directly to save a bit of code size.
apps/debug_menu.c [diff]
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
firmware/target/coldfire/debug-coldfire.c [diff]
Aidan MacDonald
2021-12-05 d93a3cac50: Use LIST_WRAP_UNLESS_HELD consistently

LIST_WRAP_ON seems to only be used in 3 places at this point.

- Keybox Plugin
- Puzzles Plugin
- (File) Properties Plugin

Switch them them over to LIST_WRAP_UNLESS_HELD as that is used everywhere else and is arguably preferable (the option to turn off list wrapping completely remains, of course).
apps/plugins/keybox.c [diff]
apps/plugins/properties.c [diff]
apps/plugins/puzzles/rockbox.c [diff]
Christian Soffke
2021-12-05 daa3967071: Properties Plugin: Fix track or disc number not appearing
apps/plugins/properties.c [diff]
Christian Soffke
2021-12-05 81da5e6409: Restore Album Artist to the default database menu

Undo the removal as discussed in g#3947.
apps/tagnavi.config [diff]
Aidan MacDonald
2021-12-05 e3ee1908dd: powermgmt: Small cleanups to battery capacity code

- Don't include the 'battery capacity' setting unless the target allows changing it.
- Clean up the preprocessor conditionals used to check for variable battery capacity support.
- Don't use a variable for battery capacity unless it is actually needed.
apps/menus/settings_menu.c [diff]
apps/plugins/battery_bench.c [diff]
apps/settings.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
firmware/export/config.h [diff]
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
Aidan MacDonald
2021-12-05 204be7f637: fiiom3k: Remove unneeded powermgmt-target.h
firmware/target/mips/ingenic_x1000/fiiom3k/powermgmt-target.h [deleted]
Aidan MacDonald
2021-12-05 8eb685ffdf: Remove a couple of #ifdefs

Give iBasso DX50/DX90 empty adc-target.h headers like all the other hosted targets to avoid special cases.
apps/main.c [diff]
firmware/powermgmt.c [diff]
firmware/target/hosted/ibasso/dx50/adc-target.h [new]
firmware/target/hosted/ibasso/dx90/adc-target.h [new]
Aidan MacDonald
2021-12-05 a6e90d2355: powermgmt: Remove outdated defines

CHARGING_DEBUG_FILE is not referenced anywhere else so just remove the #ifdef block.
firmware/export/powermgmt.h [diff]
firmware/powermgmt.c [diff]
Aidan MacDonald
2021-12-05 34b7b715e8: lcd-16bit: rewrite mono_bitmap_part

Rewrite the loop to update the framebuffer by rows rather than by columns. This should (a) be more efficient on the majority of targets using horizontal stride framebuffers,
(b) skimp a bit on code size and (c) avoid AddressSanitizer errors caused by reading past the end of the source buffer.
firmware/drivers/lcd-16bit-common.c [diff]
Aidan MacDonald
2021-12-04 46a8fe0b72: Add voicing to top level debug menu
apps/debug_menu.c [diff]
William Wilgus
2021-12-04 2bd0d5738f: PictureFlow: Preliminary fix for infinite loop

Supposed to prevent situations where PictureFlow enters into an infinite loop while unsuccessfully looking for a slide cache slot.

Technically more of a bandaid than a fix at this point, since it masks behavior that shouldn't occur in the first place, but at least it will make the issue essentially unnoticeable by the user for the time being.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-04 09e1cd489f: PictureFlow: Add alphabetic browsing (iPod&fiiom3k)

Offers more efficient navigation when number of albums is large. Scrolling with the touch wheel or touch strip works as before, but the prev/next buttons jump between album artists by first letter now.

- Keymap has only been adjusted for iPod and Fiio M3K at the moment.
- requires separate fix for infinite loop
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-03 7200b738a5: lua random_playlist generator

uses the database to create random playlists of specified size

with the advanced GUI you can.. set the number of songs (up to max playlist buffer) set the number of tracks before a repeat is allowed play the tracks when finished

-- fix a parsing bug where first and last entry in database were corrupted

-- Incremental loading for very large databases, allows decent speed and lower ram usage
apps/plugins/lua_scripts/dbgettags.lua [diff]
apps/plugins/lua_scripts/random_playlist.lua [new]
William Wilgus
2021-12-03 c94acc771d: PictureFlow: Read bitmaps in one go

As suggested by amachronic, this may significantly benefit performance.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-03 101d431d79: PictureFlow: Fix playback behavior after appending

- Once items have been appended, the existing playlist can not be reused when selecting an album for regular playback, since the playlist will be out of sync with the album's track list

- Don't re-shuffle playlist after appending items
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-03 9597d7256d: Fix lingering yellow from 8325b59f3b
apps/plugins/pictureflow/pictureflow.c [diff]
Solomon Peachy
2021-12-02 0f12a77d60: Fix red from 8325b59f3b
apps/plugins/pictureflow/pictureflow.c [diff]
Solomon Peachy
2021-12-02 64192cdfa8: Fix FS #13319
apps/shortcuts.c [diff]
Christian Soffke
2021-12-02 6325971451: Warn before replacing playlist when “Insert” hotkey is used

Makes warning for "Insert" hotkey consistent with that of "Insert Shuffled hotkey" (both will result in the current playlist being erased if playback is stopped).
apps/onplay.c [diff]
Christian Soffke
2021-12-02 8325b59f3b: PictureFlow: (grayscale) invert ‘Added to Playlist’ message

Feels less interruptive this way, since the background doesn't suddenly switch from dark to light.

Also moved message to separate function and added missing lcd_update() after clearing display.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-02 2ee4f50fa6: PictureFlow: whitespace fixes
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-02 0da0390b85: PictureFlow: Warn Before Erasing Playlist

Respect system-wide setting, in consistence with browser behavior
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-12-02 2512ed1c56: Make inline functions in headers 'static inline'

Future-proofing against newer versions of GCC/binutils which are stricter about the use of 'inline' functions in headers.
firmware/export/i2c-async.h [diff]
firmware/target/mips/ingenic_x1000/clk-x1000.h [diff]
firmware/target/mips/ingenic_x1000/sfc-x1000.h [diff]
Aidan MacDonald
2021-11-30 4162a46184: config: Get rid of an (incorrect) duplicate definition for USB_DESIGNWARE
firmware/export/config.h [diff]
Solomon Peachy
2021-11-28 dbb7371065: manual: fix layout of Backlight Exemptions description

Use a {description} block rather than an {itemize} since the latter doesn't look very good here.
manual/configure_rockbox/display_options.tex [diff]
Aidan MacDonald
2021-11-28 1ad60c3344: x1000-installer: remove redundant overflow check

This overflow is impossible to trigger due to the simple relationship between binary and hexadecimal numbers.
lib/x1000-installer/src/xf_flashmap.c [diff]
Aidan MacDonald
2021-11-28 c086a3386f: x1000-installer: map filenames accept only valid characters

Instead of using isgraph(), check for legal FAT32 characters excluding spaces (which are used as field separators).
lib/x1000-installer/src/xf_flashmap.c [diff]
Aidan MacDonald
2021-11-28 31242f8570: x1000-installer: add test for xf_map_parseline
lib/x1000-installer/Makefile [diff]
lib/x1000-installer/test/main.c [diff]
lib/x1000-installer/test/test_flashmap.c [new]
Aidan MacDonald
2021-11-28 4879891da3: x1000-installer: xf_stream_read_lines bugfixes

- Only treat EOF as newline if the line is non-empty to suppress a useless empty line after the end of a file.
- Deal with 0- and 1-byte line buffers safely.
- Remove whitespace stripping and comment handling which was left over from refactoring. Move it to xf_map_parse() where it belongs.
lib/x1000-installer/src/xf_flashmap.c [diff]
lib/x1000-installer/src/xf_stream.c [diff]
Aidan MacDonald
2021-11-28 420d545018: x1000-installer: tests for xf_stream.c
lib/x1000-installer/Makefile [diff]
lib/x1000-installer/test/data/lines_shuffled.txt [new]
lib/x1000-installer/test/data/lines_sorted.txt [new]
lib/x1000-installer/test/main.c [diff]
lib/x1000-installer/test/test_stream.c [new]
Aidan MacDonald
2021-11-28 b027063c03: x1000-installer: simple test suite runner
lib/x1000-installer/test/main.c [diff]
lib/x1000-installer/test/test.h [new]
Aidan MacDonald
2021-11-28 7ca8623927: x1000-installer: add test & code coverage support to makefile

Pass COVERAGE=1 to enable clang-based code coverage and pass SANITIZE=1 to enable sanitizers. 'make cov' will run the test app and show a coverage summary.
lib/x1000-installer/.gitignore [diff]
lib/x1000-installer/Makefile [diff]
Aidan MacDonald
2021-11-27 06423cab58: x1000-installer: Initial commit of new framework

This is a new flash installer framework for the X1000 targets.

A bunch of this code is *UNTESTED* but there is an external test harness which allows the library to be built and tested on a PC.

Once tests are written and the bugs are ironed out this framework will replace the existing installer code.

New features:

- Update tarballs are MD5-checksummed to guarantee integrity.
- The flash map is no longer fixed -- updates are self describing and carry a map file which specifies the areas to update.
- Can take full or partial backups with checksums computed on the fly.
- Supports an additional verification mode which reads back data after writing to ensure the flash contents were not silently corrupted.
lib/x1000-installer/.gitignore [new]
lib/x1000-installer/Makefile [new]
lib/x1000-installer/SOURCES [new]
lib/x1000-installer/include/xf_error.h [new]
lib/x1000-installer/include/xf_flashmap.h [new]
lib/x1000-installer/include/xf_nandio.h [new]
lib/x1000-installer/include/xf_package.h [new]
lib/x1000-installer/include/xf_stream.h [new]
lib/x1000-installer/include/xf_update.h [new]
lib/x1000-installer/src/xf_error.c [new]
lib/x1000-installer/src/xf_flashmap.c [new]
lib/x1000-installer/src/xf_nandio.c [new]
lib/x1000-installer/src/xf_package.c [new]
lib/x1000-installer/src/xf_stream.c [new]
lib/x1000-installer/src/xf_update.c [new]
lib/x1000-installer/test/main.c [new]
lib/x1000-installer/test_lib/core_alloc.c [new]
lib/x1000-installer/test_lib/core_alloc.h [new]
lib/x1000-installer/test_lib/fakenand.c [new]
lib/x1000-installer/test_lib/file.c [new]
lib/x1000-installer/test_lib/file.h [new]
lib/x1000-installer/test_lib/md5.c [new]
lib/x1000-installer/test_lib/md5.h [new]
lib/x1000-installer/test_lib/nand-x1000.h [new]
lib/x1000-installer/test_lib/pathfuncs.c [new]
lib/x1000-installer/test_lib/pathfuncs.h [new]
lib/x1000-installer/test_lib/strlcpy.c [new]
lib/x1000-installer/test_lib/strlcpy.h [new]
lib/x1000-installer/test_lib/system.h [new]
lib/x1000-installer/x1000-installer.make [new]
Aidan MacDonald
2021-11-27 98f1271aec: x1000: Fix AIC I2S divider clamping with EXCLK source
firmware/target/mips/ingenic_x1000/aic-x1000.c [diff]
Aidan MacDonald
2021-11-27 f1215a338b: uisimulator: remove an unused file

Appears to be a holdover from archos.
uisimulator/battery.c [deleted]
Aidan MacDonald
2021-11-27 9eaa14dc02: usb-designware: fix setup packet error handling

This handles the case where the host sends a new setup packet in the middle of an ongoing control transfer.
firmware/drivers/usb-designware.c [diff]
Aidan MacDonald
2021-11-27 fd50baa23f: PictureFlow: Reversible and interruptible animations

Makes PF usable on older devices with few FPS, and makes it quicker to navigate on current devices.

- PF_BACK while zooming in to zoom out again
- PF_SELECT or PF_PREV/PF_NEXT while zooming in to skip animation

- PF_BACK while zooming out to skip animation
- PF_PREV/PF_NEXT while zooming out to skip animation + scroll
- PF_SELECT while zooming out to zoom in again
- PF_CONTEXT while zooming out to skip animation and append

- PF_CONTEXT while scrolling to append
- PF_SELECT while scrolling to zoom in
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-11-27 e4d8431211: Update microtar users to new library API
firmware/target/mips/ingenic_x1000/installer-x1000.c [diff]
rbutil/jztool/src/x1000.c [diff]
Aidan MacDonald
2021-11-27 c1709e3194: microtar: Update to latest upstream commit

This is a major overhaul of the library with some API changes and ease of use improvements, particularly for creating new archives.

The updated functionality is intended to support a new X1000 installer framework.
lib/microtar/.gitignore [new]
lib/microtar/LICENSE [diff]
lib/microtar/Makefile [new]
lib/microtar/README.md [diff]
lib/microtar/README.rockbox [new]
lib/microtar/mtar.c [new]
lib/microtar/src/microtar-rockbox.c [diff]
lib/microtar/src/microtar-rockbox.h [new]
lib/microtar/src/microtar-stdio.c [diff]
lib/microtar/src/microtar-stdio.h [new]
lib/microtar/src/microtar.c [diff]
lib/microtar/src/microtar.h [diff]
Aidan MacDonald
2021-11-25 4052a9ddcf: Manual: Update Metadata limitations

Limit for devices with more than 8MB of memory had previously been increased from 300 to 500 bytes for individual fields, and to 1800 from 900 bytes for buffer containing all fields.

See a8846e3
apps/features.txt [diff]
manual/appendix/file_formats.tex [diff]
Christian Soffke
2021-11-25 871572b6c3: touchscreen: improved pixelwise scrolling in lists

Scrolling via the scrollbar is now a bit smoother -- it's now drawn pixelwise, and dragging it will scroll the list pixelwise instead of rigidly snapping to items.

Several other general UX issues were fixed:

- List and scrollbar now occupy the full viewport height, to maximize use of screen space.
- Fixed issue with last item in the list suddenly appearing or disappearing while scrolling.
- Prevented scrolling into blank space after the last item.
apps/gui/bitmap/list.c [diff]
Aidan MacDonald
2021-11-24 44acbc6629: Shanling Q1: enable multi-touch reporting

The FT6x06 driver used for the Shanling Q1's touchscreen has been extended to report more than one touch point. It can also return the gesture detected by the controller, but this doesn't seem to report anything useful on the Q1.

Multi-touch is only useful in 3x3 grid mode since the Rockbox button API cannot report more than one touch point.

The FiiO M3K uses the same driver so it's been updated to the multi-touch API, but functionality is unchanged.
firmware/drivers/ft6x06.c [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
firmware/export/ft6x06.h [diff]
firmware/target/mips/ingenic_x1000/debug-x1000.c [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/shanlingq1/button-shanlingq1.c [diff]
Aidan MacDonald
2021-11-23 b39acee3ab: rb_info plugin and button,action+context name helper

rb_info is just a test plugin

just some info from the running rockbox install

the real star here is the generator scripts to make actions_helper.c and button_helper.c
apps/action.h [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/lib/SOURCES [diff]
apps/plugins/lib/action_helper.c [new]
apps/plugins/lib/action_helper.h [new]
apps/plugins/lib/action_helper.pl [new]
apps/plugins/lib/button_helper.c [new]
apps/plugins/lib/button_helper.h [new]
apps/plugins/lib/button_helper.pl [new]
apps/plugins/plugins.make [diff]
apps/plugins/rb_info.c [new]
William Wilgus
2021-11-22 3d07ec46ee: jz47x0: Minor code quality improvements in the jz47xx USB drivers

* Replace magic nubmers with #defined constant
* Tweak some logf messages

No functional changes!
firmware/export/jz4760b.h [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4740.c [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4760.c [diff]
Solomon Peachy
2021-11-22 5bd9ed801f: Fix: PictureFlow splash() crash on grayscale targets

On targets where the grayscale framework is used, splash() won't work (and may crash) if the overlay is not switched off first. This is not reproducible in the simulator.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-11-22 f9ce8720c4: Fix: PictureFlow crashes

- After appending albums, when memory had been borrowed from the buflib buffer by shifting memory up using buflib_buffer_out() in create_track_index(), memory was later not shifted down using buflib_buffer_in() (the latter was only called after displaying the track list).

- The picture loading thread was able to allocate memory from the buflib pool while the main thread was moving the buffer around. Slide loading will now be paused before shifting operations, and continued afterwards.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-11-21 3f966b2aa4: touchscreen: make quickscreen easier to use

In absolute pointing mode, the quickscreen now accepts a touch anywhere in the middle third of the screen edge to trigger an item, and pressing anywhere else on the
'grid' will exit -- the same as how 3x3 mode works.

Previously it required a touch inside the text viewport to trigger an item, and exited after any touch outside the viewports. This made it very difficult to use since the text viewports are too small to reliably touch.
apps/gui/quickscreen.c [diff]
Aidan MacDonald
2021-11-21 bff63a4f90: touchscreen: change odd sentinel value for time of last touch

Using tick 0xffff does not make any sense, use -1 instead.
apps/gui/skin_engine/skin_parser.c [diff]
apps/gui/skin_engine/skin_tokens.c [diff]
firmware/drivers/button.c [diff]
firmware/export/button.h [diff]
Aidan MacDonald
2021-11-21 7e428ad190: touchscreen: force 3x3 mode in the keyboard

In absolute pointing mode the keyboard is virtually unusable since the keys are too tiny (just 8x6). There are other issues too: for example putting the keys on top doesn't make sense on touchscreens and there is a lot of empty space in between keys that serves no real purpose.

Until these issues can be addressed properly simply force 3x3 mode when in the keyboard.
apps/recorder/keyboard.c [diff]
Aidan MacDonald
2021-11-21 ad66c3b807: touchscreen: use repeat acceleration for button input

Touch devices have physical buttons too, and these should be subject to repeat acceleration. That feature was disabled for the sake of better touch event responsiveness (apparently).

So, re-enable the acceleration feature & add a special case to exempt BUTTON_TOUCHSCREEN from acceleration.
firmware/drivers/button.c [diff]
Aidan MacDonald
2021-11-21 990c543ebc: Revert "Pictureflow: Update for tag_virt_canonicalartist."

This reverts commit 60125f6bc987f4e234610f3e23a0e45e5d9b6d6e.

Reason for revert: See g#3947.
apps/plugins/pictureflow/pictureflow.c [diff]
James Smith
2021-11-21 a14347a6b3: quickscreen: fix non-intuitive behavior of top/bottom items

The behavior of the top/bottom items is not intuitive when used with settings like volume or brightness -- pressing up will actually *decrease* the setting, and down will increase it. This patch inverts the direction, so the top item will increase the setting.

The reason for this is that historically, the quickscreen seems to have had only 3 directions -- left, right, and bottom. Bottom therefore selected the next value, and when top was introduced it selected the previous value.

The counter-intuitive nature of this was later reported as a bug on the Fuze V2 and got an incorrect fix (commit 2271995517) under the assumption that ASCENDING_INT_SETTINGS was the issue.
apps/gui/quickscreen.c [diff]
Aidan MacDonald
2021-11-20 16a71a19a8: debug_menu: add format specifier for seconds in RDS timestamp

Add the 6th format specifier for the 6th parameter and show seconds, too. Most radio stations will update once per minute only, but still...
apps/debug_menu.c [diff]
Wolfram Sang
2021-11-18 336ea51af6: WIP: Samsung YPR0/1: switch to generic SI47xx polling

Should work(tm). But I don't have the hardware, so it needs to be tested.
firmware/export/config/samsungypr0.h [diff]
firmware/export/config/samsungypr1.h [diff]
firmware/target/hosted/samsungypr/radio-ypr.c [diff]
Wolfram Sang
2021-11-18 de0346065b: Sansa Clip+: add RDS support

Based on a patch by Amaury Pouly which was based on a patch from Ryan Hitchman.

I mainly moved the code for polling into the tuner driver so it can be reused by other targets. I added the CONFIG parameter for the polling frequency (in ticks) to save energy. Also, I did some minor cleanups.
firmware/drivers/tuner/si4700.c [diff]
firmware/export/config.h [diff]
firmware/export/config/sansaclipplus.h [diff]
firmware/export/si4700.h [diff]
firmware/target/arm/as3525/fmradio-i2c-as3525.c [diff]
firmware/target/arm/as3525/system-as3525.c [diff]
Wolfram Sang
2021-11-18 701d4ba77e: x1000: Merge makefiles used for the bootloader

All three X1000 native targets turned out to have a very similar boot configuration and used a nearly identical makefile. Eliminate this duplication by moving the logic into the main makefile.
firmware/target/mips/ingenic_x1000/erosqnative/boot.make [deleted]
firmware/target/mips/ingenic_x1000/fiiom3k/boot.make [deleted]
firmware/target/mips/ingenic_x1000/shanlingq1/boot.make [deleted]
firmware/target/mips/ingenic_x1000/x1000boot.make [diff]
tools/configure [diff]
Aidan MacDonald
2021-11-14 6e61e6f0c8: usb_core: don't buffer control request unnecessarily

Due to how the old control request API worked, the request pointer (and the pointed-to contents) passed by the driver must remain valid for the lifetime of the request.

The buffered copy wasn't used consistently anyway, so it should be safe to just get rid of it.

(This only affects the old API compatibility layer.)
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-11-13 f8810be6de: usb_core: More legacy control API fixes

In the old API, usb_core_transfer_complete() would ignore any completions on EP0. The legacy control API will also ignore most completions on EP0, but it only did so after filling in the completion event.

If the driver submits a spurious completion on EP0, then this could clobber a previously queued completion event.

Fix this by deciding whether to ignore the completion
*before* modifying the event data.
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-11-13 a4e422db9e: Stop audio before applying skin

Should prevent a delay, dropouts and memory corruption that can occur when applying a skin while music is playing
apps/gui/skin_engine/skin_engine.c [diff]
Christian Soffke
2021-11-13 11ddc6cf1c: announce_status Fix USB fall through and usb on plugin start

When running and USB plugged announce status ack'd the USB and then un intentionally fell through to EV_EXIT this caused the thread to exit but not the TSR hook

Now: plugin keeps track of usb status and doesn't announce till usb is unplugged again on unplug the start-up beep is played to announce its presence

announce_status on startup blocks usb since USB handling is done in the thread that hasn't started yet Now: don't start if USB is plugged

Plugin now beeps if it couldn't play the announcement excpept for missing voice file unfortunately
apps/plugins/announce_status.c [diff]
William Wilgus
2021-11-12 59ef877c94: x1000: delay power thread until valid battery read

Appears to return 0 until the axp has (presumably) completed its first real measurement.

Note about erosq: keep the power_inint() delay large to ensure nothing breaks in the bootloader for the time being.
firmware/powermgmt.c [diff]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
Dana Conrad
2021-11-12 ee27ba416f: uisimulator: add keyboard mappings for M3K scrollstrip
uisimulator/buttonmap/fiio-m3k.c [diff]
Aidan MacDonald
2021-11-11 fbf83dc4ce: Add setting for disabling wrap-around lists

Allows user to decide whether scrolling lists will wrap around to the opposite end after the first or last item has been reached.
apps/gui/list.c [diff]
apps/lang/english.lang [diff]
apps/menus/display_menu.c [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/recorder/keyboard.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/appendix/config_file_options.tex [diff]
manual/configure_rockbox/display_options.tex [diff]
Christian Soffke
2021-11-11 30a23fdd6d: folder_select.c move to plugin as db_folder_select

handles the folder selection for autoresume paths and database paths

folder_select uses the pluginbuf to build the directory tree hopefully having it as a plugin will make it stop corrupting TSR plugins like battery_bench and announce_status

I left the original include and source in the gui directory for now there are currently no other users..
apps/menus/settings_menu.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/db_folder_select.c [new]
William Wilgus
2021-11-11 cf009b4cbb: pitchscreen make it a plugin

full commandline parsing
-has pitch, speed, time_stretch
/* pitch_screen
* accepts args -q, -g, -p=, -s=, -k=; (= sign is optional)
* -q silences output splash
* -g runs the gui (Runs immediately)
* -p100 would set pitch to 100%
* -s=90 sets speed to 90% if timestrech is enabled
* -k=true -k1 enables time stretch -k0 -kf-kn disables
*/
apps/gui/pitchscreen.c [diff]
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/CATEGORIES [diff]
apps/plugins/SOURCES [diff]
apps/plugins/lib/arg_helper.c [diff]
apps/plugins/lib/arg_helper.h [diff]
apps/plugins/pitch_screen.c [new]
William Wilgus
2021-11-11 67fb558c89: as3525: debug: use 'kHz' where applicable instead of "MHz" or "KHz"
firmware/target/arm/as3525/debug-as3525.c [diff]
Wolfram Sang
2021-11-10 eb4455b00b: manual: add space after \ActionFMPreset
manual/main_menu/fmradio.tex [diff]
Wolfram Sang
2021-11-10 e6313201c1: Playback: Skip invalid entries from playlist

Reverts to the behavior pre-commit dfff938 with the additional change that it will not skip the last entry.
apps/playback.c [diff]
Christian Soffke
2021-11-10 ce18e13504: Manual: add Single Mode to config file options
manual/appendix/config_file_options.tex [diff]
Christian Soffke
2021-11-10 a7d09f8104: PictureFlow: remember inspected album artwork

Each time PictureFlow was launched, it would rebuild the album artwork cache from the beginning.

Depending on the number of albums, this could take a while and resulted in choppy scrolling.

PictureFlow will now remember how many albums have been inspected already, and only rescan and write new artwork when the album index cache gets updated or rebuilt.
apps/plugins/pictureflow/pictureflow.c [diff]
Christian Soffke
2021-11-10 687096e3f5: Fix: Shortcuts Menu data loss & crash

- Shortcuts Menu would delete SHORTCUT_TIME shortcuts when deleting any other shortcut.

- Shortcuts would crash or show wrong number of items after deleting a shortcut and then launching a shortcut when simplelist_show_list was executed again.
apps/shortcuts.c [diff]
Christian Soffke
2021-11-10 9ee321cf90: ErosqNative: increase battery stabilization delay again

Hopefully 250 is long enough for any devices out there!
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
Dana Conrad
2021-11-10 58462184d1: folder_select.c partial rewrite -- remove static, add full notification

| with some code refactoring we can eliminate the static char buffer in get_full_path()

I'm guessing making the functions recursive prompted the static buffer I don't see any reason we can't just pass the same buffer
| During tested I noted failure after buffer was full
-- splash added for buffer full notification

added some logic to not add partial entries and try to find a
| selected item that will fit in the remaing buffer
------------------------------------------------------------------------

While looking through the source I noticed a few potential pitfalls with the current code.

Namely the stack allocated temporary buffer sized to setting_len.

I also noted the rigid vect[32] with the timeless --
/* 32 separate folders should be Enough For Everybody(TM) */ and decided to make it a bit more robust

The saved items are hashed with crc32 on all the paths and a hashed_len is kept to aid in the buffer full message before the user actually goes to save the changes
(assuming they even get the message)

In the old code, buffer might be the same since it ran out of space and didn't get their later selections

the hashed_len could easily be turned into a way to get a needed buffer size as well for someone in the future just pass a really large maxlen

I made get_full_path non recursive since it liked to blow the stack while embedded in all the other recursive calls making it a pain to debug
(the real reason the buffer was static?) traverse first from the current folder to root mutating the parent pointers to point at the previous child next traverse back to the folder unmutating & taking names on the way

Folder depth is now uint16 65535 levels is probably excessive children_count is also uint16 as well I made the first folders below root '/' stay below root instead of shifting since the horizontal real estate is limited

slightly smaller than it began but hopefully faster & more reliable
apps/gui/folder_select.c [diff]
William Wilgus
2021-11-09 b14df9077f: 2048 plugin: Fix disappearing numbers (FS #13303)
apps/plugins/bitmaps/native/SOURCES [diff]
apps/plugins/bitmaps/native/_2048_tiles.26x26x2.bmp [new]
Christian Soffke
2021-11-09 7af98ce6bb: usb: Fix possible SET ADDRESS data corruption

The address from the packet needs to be saved before sending the response -- after the response the request being pointed to could get overwritten. This used to be done correctly but I unintentionally broke it when updating the handler to the new control request API.
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-11-08 9f1cab154c: lcd-16bit-common move bugfix to sim only

Ive seen no ill effects having this disabled on target so limit it to the sim to stop Address Sanitizer from dumping on the extra byte read. the bad data is never used AFAICT since the loop ends
firmware/drivers/lcd-16bit-common.c [diff]
William Wilgus
2021-11-08 8c954c68e5: usb: Attempt to fix race condition in compatibility layer

Because usb_core_legacy_control_request() is called by an interrupt handler the global variables used to track the current control request at the very least need to be volatile.

It might also be necessary to disable IRQs but I'm not sure of that.
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-11-08 aed113042d: RFC settings & nvram.bin save setting to tmp file save old

save to a .tmp file on save and rename on next load

I think this should pretty minimally invasive as the same file still gets overwritten in subsequent attempts until it is loaded again

the save path is still static so it won't cause issues holding up shutdown.

load might be a bit slower with the searching for tmp+current file and renaming them

Plus there is now a backup of your last settings file
apps/settings.c [diff]
William Wilgus
2021-11-08 25941d5e0c: fiiom3k (keymap): Allow scrolling up/down in keyboard context
apps/keymaps/keymap-fiiom3k.c [diff]
Christian Soffke
2021-11-07 f07bacac9e: plugin_screen don't save settings on every plugin execution

we shouldn't need to save the last_screen unless the plugin were to bypass the normal shutdown procedure

if its a crash do we really want to resume the plugin? its it is intentional save the settings prior.
apps/root_menu.c [diff]
William Wilgus
2021-11-07 cfbc1cfce1: Shortcuts, allow plugins to run through inbuilt file browser

since the plugin browser now exits before running plugins it has already loaded the dest data for the plugin the plugin will be run from the root menu with the open_plugin run key

BUT, since the calls originated from the shortcuts menu it overwrites the run key with its own this patch allows the shortcuts menu to overwrite the dest key as well so it can run the loaded plugin
apps/root_menu.c [diff]
William Wilgus
2021-11-07 1d67f83c58: root_menu.c fix recent regression for shortcuts add resume for plugins

recent changes broke shortcuts when they originated from the root menu

I mistakenly thought GO_TO_ROOT only happened at start and otherwise was GO_TO_PREVIOUS

this commit also adds a few missing features for Start In Previous to resume the last plugin running at shutdown

Additionally GO_TO_ROOT now overwrites the global last_screen so you can return to the main menu on next startup
apps/open_plugin.c [diff]
apps/root_menu.c [diff]
William Wilgus
2021-11-05 13ac485625: Add single playback mode
(FS #482)
apps/lang/english-us.lang [diff]
apps/lang/english.lang [diff]
apps/lang/hebrew.lang [diff]
apps/menus/playback_menu.c [diff]
apps/pcmbuf.c [diff]
apps/playback.c [diff]
apps/settings.h [diff]
apps/settings_list.c [diff]
manual/configure_rockbox/playback_options.tex [diff]
Moshe Piekarski
2021-11-03 22c2e0a7c2: Fix: Reset onplay-context for playlist viewer

The onplay-context was previously not reset when using the playlist viewer, which led to a bug if onplay() was last called in the context of the database. If you then tried to insert songs into a dynamic playlist using the playlist viewer, a selected track from the database would be picked, instead of one from the displayed playlist, due to special behavior of add_to_playlist() within the database context.
apps/onplay.c [diff]
Christian Soffke
2021-11-03 5e663f0420: xduoox3ii: Ignore the remote events when headphones aren't plugged in

This prevents the actual insertion/removal from triggering false events
firmware/target/hosted/xduoo/button-xduoo.c [diff]
Solomon Peachy
2021-11-01 2731144094: exit file browser before running plugins

now that the plugin browser is resumable exit it before running plugins

this causes a problem with the open plugin shortcuts that call other plugins but its now handled in count limited loop so plugins can run plugins in a chain

and overall with less overhead too..

the problem remaining -- the plugin exits on USB, returns to ROOT

the browser resumes the directory next time you select plugins making for an unwanted auto return
apps/filetree.c [diff]
apps/root_menu.c [diff]
William Wilgus
2021-11-01 684565b8f3: USB fix red for device without HAVE_USB_POWER again.
firmware/usb.c [diff]
uisimulator/common/sim_tasks.c [diff]
William Wilgus
2021-10-31 d72a0ed65d: Use USB events for storing plugin_menu state

use usb connected callback to cancel menu reentry after USB plug/unplug
apps/menus/plugin_menu.c [diff]
apps/tree.c [diff]
firmware/usb.c [diff]
uisimulator/common/sim_tasks.c [diff]
William Wilgus
2021-10-31 7a6737f471: USB Events fix red on devices without HAVE_USB_POWER
firmware/usb.c [diff]
William Wilgus
2021-10-31 894a9d9063: USB add Insertion and Extraction callback events

We have this nice event library laying around probably a few more places we could use event callbacks
firmware/export/events.h [diff]
firmware/usb.c [diff]
uisimulator/common/sim_tasks.c [diff]
William Wilgus
2021-10-29 0b1c05db40: Have ACTION_TREE_ROOT_INIT cause ACTION_STD_MENU

So that a “scroll left” button can be repurposed for returning to the main menu when there is no existing menu button mapping.
apps/gui/list.c [diff]
Christian Soffke
2021-10-29 139d447c6a: fiiom3k: Modified keymap

see https://forums.rockbox.org/index.php/topic,52917.msg249425.html#msg249425
apps/keymaps/keymap-fiiom3k.c [diff]
Christian Soffke
2021-10-29 dc24a18cef: PLUGINBROWSER make resumable

make the plugin browser remember the last item between invocations

this has bugged me for the longest time dealing with the plugin_menu

Fix a very old bug fix for reloading lang strings in the lang menu
FS #8117, sending multiple ENTER_MENU_ITEM callbacks from different areas of the code makes it hard to keep track of where your callback is originating
apps/menu.c [diff]
apps/menus/plugin_menu.c [diff]
apps/root_menu.c [diff]
apps/tree.c [diff]
William Wilgus
2021-10-28 8ee24d8cb4: onplay calls plugins to run other plugins
apps/onplay.c [diff]
apps/tree.c [diff]
William Wilgus
2021-10-27 f1ef5ab8a6: menu.c do_menu code cleanup

no functional changes here just removal of cruft
apps/menu.c [diff]
William Wilgus
2021-10-24 1cec2c7a73: root_menu fix red for devices with RTC_ALARM but no tuner or recording
apps/root_menu.c [diff]
William Wilgus
2021-10-24 3e10ecb82a: root_menu.c code clean up -- stir the ifdef mess?
apps/root_menu.c [diff]
William Wilgus
2021-10-23 36d319b084: Open Plugins Ignore hash for lang Ids

no need to look up a hash when we have another searchable field remove some un-needed checks
apps/open_plugin.c [diff]
apps/open_plugin.h [diff]
William Wilgus
2021-10-23 789b2e089e: plugin.h change plugin_open() path and parameter to const

it doesn't modify the args..
apps/plugin.c [diff]
apps/plugin.h [diff]
William Wilgus
2021-10-22 f4c7dc933d: lua add ability to pass PLUGIN_ ret vals with os.exit() + add defines
apps/plugins/lua/rbdefines_helper.pl [diff]
apps/plugins/lua/rocklua.c [diff]
apps/plugins/lua_scripts/return2WPS.lua [new]
William Wilgus
2021-10-21 1697b13693: whitespace fixes
apps/bookmark.c [diff]
apps/cuesheet.c [diff]
apps/gui/option_select.c [diff]
apps/menu.c [diff]
apps/playlist_viewer.c [diff]
apps/plugins/keybox.c [diff]
apps/plugins/lrcplayer.c [diff]
apps/plugins/main_menu_config.c [diff]
apps/plugins/random_folder_advance_config.c [diff]
apps/tree.c [diff]
manual/appendix/config_file_options.tex [diff]
Christian Soffke
2021-10-21 cf96a4d386: file tree filetype_list_viewers exit from list before execution

no need to do a callback just to exit the list right after executing a viewer plugin
apps/filetypes.c [diff]
William Wilgus
2021-10-21 af573708ed: extend filetype_get_plugin() search for viewer by fileext

I noticed the way filetree switch was modified for the lua (and then) opx and open plugin viewers since builtin files are assumed to be handled in the filetree switch what if instead filetype_get_plugin() could search the available viewers

this could probably be extended further with selectable defaults
apps/filetree.c [diff]
apps/filetypes.c [diff]
William Wilgus
2021-10-20 9878226e4d: filetree.c move static and stack allocated buffers around it makes more sense to make the main buffer static and make the second (infrequently needed) buffer as stack allocated
apps/filetree.c [diff]
apps/filetypes.c [diff]
apps/filetypes.h [diff]
William Wilgus
2021-10-19 e1553d860d: Open_Plugin add checksum on struct offsets

Adding a checksum over the struct offset will allow checking for compatibility across machines rather than using packed structs to ensure compability

For any file created by the user from the device this isn't really a concern

But for files between machines, across installs (sim v device), possibly even across compilers this at least will alert the user rather than returning junk data
apps/open_plugin.c [diff]
apps/open_plugin.h [diff]
apps/plugins/open_plugins.c [diff]
William Wilgus
2021-10-18 0f68866ae5: fiiom3k: bump power on delay to 200ms

Needed due to a report that 80ms was not working.
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
Aidan MacDonald
2021-10-18 957add9d75: fiiom3k: adjust power on delay to 80ms

OST timer fix (7a5130a277) causes a boot failure on some units, the battery voltage reading needs more time to stabilize.
firmware/target/mips/ingenic_x1000/fiiom3k/power-fiiom3k.c [diff]
Aidan MacDonald
2021-10-16 6253cdebed: ErosQNative: Fix mdelay calls due to g3859

The battery stabilization delay call seems to need to be about 170 at minimum now, let's do 190 for safety (+20ms).
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
Dana Conrad
2021-10-16 7a5130a277: x1000: fix broken OST2 timer prescaler

It turns out the prescaler fields in OST_CTRL are 2 bits wide, not 3. The programming manual (as usual) is ambiguous and its diagram shows 2-bit wide fields, but the bit positions in the text give a 3-bit wide field. Ingenic's Linux code and my own testing shows that they are, in fact, 2 bits wide.

This caused the OST2 divisor to be 16 instead of 4; the OST1 divisor was correct. This means that all udelay/mdelay calls took 4x longer than they should've. After this change the OST2 prescaler will be 4, as intended, and udelay/mdelay calls will wait for the intended duration.
firmware/target/mips/ingenic_x1000/fiiom3k/button-fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/x1000/ost.h [diff]
utils/reggen-ng/x1000.reggen [diff]
Aidan MacDonald
2021-10-16 bf54002bc1: Fiio M3k UI Simulator: Fix upside-down mapping for volume buttons
uisimulator/buttonmap/fiio-m3k.c [diff]
Christian Soffke
2021-10-16 d085d01f5e: x1000: enable DMA for USB driver

This boosts USB transfer performance a bit, ~10% for reads and
~25% for writes, for large-ish file transfers. Rockbox is still around 33-50% slower than the OF.
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
Aidan MacDonald
2021-10-16 4fc37eb47f: usb-designware: port to new USB API

List of all platforms using this driver:

- Sansa Clip+ (tested, works)
- Sansa Clip v2 (untested)
- Sansa Clip Zip (tested, works)
- Sansa Fuze v2 (untested)
- iPod 6G (untested)
- iPod Nano 2G (untested)
- FiiO M3K (tested, works)
- Shanling Q1 (tested, works)
- Eros Q (tested, works)
firmware/drivers/usb-designware.c [diff]
firmware/export/config.h [diff]
firmware/export/usb-designware.h [diff]
Aidan MacDonald
2021-10-16 24294bda15: usb: ensure RX buffers are a multiple of the packet size

When performing an OUT transfer which is not a multiple of the max packet size, the last packet of the OUT transfer should be a short packet. However, there's no guarantee the host sends the expected amount of data in the final packet.

The DWC2 USB controller handles this case by accepting any size packet and copying it out to memory. So if the packet is bigger than expected, it'll overrun the caller's buffer and Bad Things will happen.

The USB 2.0 spec seems to endorse this behavior. Section 8.5.1 says "an ACK handshake indicates the endpoint has space for a wMaxPacketSize data payload." So it is possible that other USB controllers share the DWC2's behavior.

The simplest solution is to force all USB RX buffers to be big enough to hold the transfer size, rounded up to a multiple of the max packet size. For example, a transfer of 700 bytes would require a 1024-byte buffer if the MPS = 512 bytes.
firmware/usbstack/usb_hid.c [diff]
firmware/usbstack/usb_serial.c [diff]
firmware/usbstack/usb_storage.c [diff]
Aidan MacDonald
2021-10-16 a665c1faad: usb: remove dead code in usb_storage driver
firmware/usbstack/usb_storage.c [diff]
Aidan MacDonald
2021-10-16 988f244c74: usb: port usb_storage control request handling to new API
firmware/usbstack/usb_storage.c [diff]
Aidan MacDonald
2021-10-16 1b2cc053d3: usb: port usb_hid control request handling to new API
firmware/usbstack/usb_hid.c [diff]
Aidan MacDonald
2021-10-16 3318ba4795: usb: port usb_serial control requests handling to new API
firmware/usbstack/usb_serial.c [diff]
Aidan MacDonald
2021-10-16 77731c3579: usb: port usb_core control request handling to new API
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-10-16 82efb1150e: usb: implement new API with legacy emulation layer

All existing USB drivers now define USB_LEGACY_CONTROL_API to enable the emulation layer.

Control request handlers will be ported in follow-up commits.
firmware/export/config.h [diff]
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-10-16 dff8320a5d: usb: add request data argument to all control request handlers
firmware/usbstack/usb_class_driver.h [diff]
firmware/usbstack/usb_core.c [diff]
firmware/usbstack/usb_hid.c [diff]
firmware/usbstack/usb_hid.h [diff]
firmware/usbstack/usb_serial.c [diff]
firmware/usbstack/usb_serial.h [diff]
firmware/usbstack/usb_storage.c [diff]
firmware/usbstack/usb_storage.h [diff]
Aidan MacDonald
2021-10-16 b69d43c247: usb: give USB transfer completion events two data pointers
firmware/export/usb.h [diff]
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-10-16 ec164c389c: usb: introduce new control request API
docs/usb-api.md [new]
firmware/drivers/isp1583.c [diff]
firmware/drivers/m66591.c [diff]
firmware/drivers/usb-designware.c [diff]
firmware/export/usb_core.h [diff]
firmware/export/usb_drv.h [diff]
firmware/target/arm/as3525/usb-drv-as3525.c [diff]
firmware/target/arm/rk27xx/usb-drv-rk27xx.c [diff]
firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c [diff]
firmware/target/arm/usb-drv-arc.c [diff]
firmware/target/arm/usb-s3c6400x.c [diff]
firmware/target/arm/usb-tcc.c [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4740.c [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4760.c [diff]
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-10-16 71cc1e78fd: Open_plugins.c bugfix address of packed struct element

helpful gcc warning after g#3895 change to packed struct
apps/plugins/open_plugins.c [diff]
William Wilgus
2021-10-16 15ee740060: Open Plugins search by langids

On language change Stored plugins may fail to run due to hashing on lang dependent string

allows searching by langid when the supplied key is LANG_PTR

Fixes error on hash flush where previous entry was not restored

Adds routine to update file in-place (for ATA targets) Other targets make a temp file to copy entries

breaking changes: ROCKBOXDIR is no longer hashed since
/.rockbox directory may soon be able to be changed packed attribute added to op data structure -- oops
apps/open_plugin.c [diff]
apps/open_plugin.h [diff]
apps/root_menu.c [diff]
William Wilgus
2021-10-13 6fb942d8ff: skin engine - fail gracefully when %Sx is used on non lang id string

CheckWPS doesn't catch errors involving translated strings Instead of breaking old themes when the langids no long exist return "<ERR>"
apps/gui/skin_engine/skin_parser.c [diff]
apps/gui/skin_engine/skin_tokens.c [diff]
William Wilgus
2021-10-06 e0468074fe: ErosQNative: Remove duplicate play_last_sample() call

My brain dun goofed, oops
firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c [diff]
Dana Conrad
2021-10-06 c0a59b9a6a: usbstack: Revise usb string descriptor table to use enum values for indices

This makes it possible for macros of conditionally included string descriptors to get a correct index no matter what other usb drivers are enabled or disabled due to the nature behavior of enums.
firmware/export/usb_core.h [diff]
firmware/usbstack/usb_core.c [diff]
James Buren
2021-10-06 4be81c2385: x1000: tweak USB fifo sizes

The old sizes limited the number of usable endpoints and were unnecessarily large.
firmware/target/mips/ingenic_x1000/usb-x1000.c [diff]
Aidan MacDonald
2021-10-06 67d4da5342: ErosQNative: Initialize AIC FIFO to -1

Write -1 to AIC_DR to initialize the "last sample" to -1 in order to prevent power-on clicks.

It appears necessary to completely fill the FIFO, otherwise I was able to get a click out of it, however uncommon it was.

Not only does this prevent a click when first playing a song after power-on, but it also seems to prevent any click at all when powering on - previously, a small click may have been heard when first booting.
firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c [diff]
Dana Conrad
2021-10-06 465c216636: Fix includes in usb_class_driver.h
firmware/usbstack/usb_class_driver.h [diff]
Aidan MacDonald
2021-10-05 3ae6fbc600: x1000: default to sending 0 samples on underflow

Previously it used the last sample, which turns out to be broken. The AIC appears to send out a random non-zero sample continously after boot -- probably because the last sample is uninitialized by the hardware. Disabling playback is supposed to make it send zero samples irregardless of the LSMP bit according to the docs, but it doesn't seem to work this way.

- Change eliminates the white noise heard on the M3K after boot.
- Change has no adverse effects on the Q1.
- Leave Eros Q on the old setting since sending zeros exacerbates clicking due to DAC's automute feature.
firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c [diff]
firmware/target/mips/ingenic_x1000/pcm-x1000.c [diff]
Aidan MacDonald
2021-10-05 fd568d90a4: m3k: don't use mixer controls for volume control

According to a forum user, there's an audible click when changing the volume between -32 and -32.5 dB with some headphones. Fix this by not (ab)using the DAC digital mixer for volume control.

The mixer only provides an extra -6 dB of hardware volume range, so the only side effect is that software volume will now kick in at -32 dB instead of -38 dB.
firmware/drivers/audio/ak4376.c [diff]
Aidan MacDonald
2021-10-04 0a1d25d27a: Sansa E200v1 Bootloader ensure USB unplug is detected
bootloader/main-pp.c [diff]
William Wilgus
2021-10-04 e6740ed562: Sansa E200v1 Bootloader add break statement to exit to load fw
bootloader/main-pp.c [diff]
William Wilgus
2021-10-04 7c67a48332: Sansa E200v1 Bootloader attempt at enabling USB in boot loader

there is a 1MB free region that is used to load the firmware but we shouldn't need that till after a USB connection

so here is my 2nd try
bootloader/main-pp.c [diff]
firmware/core_alloc.c [diff]
William Wilgus
2021-10-02 75524a7eec: Shanling Q1: default to USB force charging

Force charging must be set or the Q1 will not draw 500 mA from an AC adapter (see 0ca0940f01).
firmware/export/config/shanlingq1.h [diff]
Aidan MacDonald
2021-10-02 a62fdf4751: scroll engine, allow clipped text in viewport

loosen the requirements on the scroll viewport allow clipped text
firmware/drivers/lcd-bitmap-common.c [diff]
William Wilgus
2021-10-02 3a89fdee96: x1000: fix hang that may occur in USB mode

Upon getting a USB reset, the USB core will update charging current by calling usb_charging_maxcurrent_change(). On all current X1000 targets this may cause a hang, since changing the charge current involves a blocking I2C transaction.

Eg. if the host issues a reset when we're already configured as part of error recovery, the change from 500 mA -> 100 mA will cause a hang.
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
firmware/export/config/shanlingq1.h [diff]
firmware/usbstack/usb_core.c [diff]
Aidan MacDonald
2021-10-02 d435bb77b5: Yes/No Screen Keymap: add fallbacks to targets lacking them

With the addition of ignoring unknown actions to the yes/no screen, several (mostly older) targets won't have keys defined to cancel out of the yes/no screen.

Adding fallbacks to standard context to correct this.

Targets: Shanling Q1 - changed, untested (doesn't appear sim has buttons mapped) Sansa Connect - changed, untested (can't figure out sim keys)

HM60x - changed, untested (sim won't build) HM801 - changed, untested (sim won't build) ihifi - changed, untested (sim won't build) MA - changed, untested (sim won't build)

M3 - changed, tested on sim X5 - changed, tested on sim MPIO HD300 - changed, sim tested MPIO HD200 - changed, sim tested (remote not tested) Vibe 500 - changed, sim tested
apps/keymaps/keymap-hm60x.c [diff]
apps/keymaps/keymap-hm801.c [diff]
apps/keymaps/keymap-ihifi.c [diff]
apps/keymaps/keymap-m3.c [diff]
apps/keymaps/keymap-ma.c [diff]
apps/keymaps/keymap-mpio-hd200.c [diff]
apps/keymaps/keymap-mpio-hd300.c [diff]
apps/keymaps/keymap-sansa-connect.c [diff]
apps/keymaps/keymap-shanlingq1.c [diff]
apps/keymaps/keymap-vibe500.c [diff]
apps/keymaps/keymap-x5.c [diff]
Dana Conrad
2021-10-01 95b10ac74e: Add ability to dump cpu boost log to disk, include thread names

0.) B 0 /rockbox/apps/main.c:405 1.) B 1 /rockbox/firmware/kernel/thread.c thread[dircache]:1508 2.) B 2 /rockbox/apps/tagcache.c:4772 3.) U 3 /rockbox/apps/tagcache.c:4793

add logic to show count after log rolls over clean-up
apps/debug_menu.c [diff]
firmware/kernel/thread.c [diff]
firmware/system.c [diff]
William Wilgus
2021-09-29 5883cb4a52: languages: Prefer the translated <dest> over a <voice> that is identical to English

A lot of our translations have voice phrases that are identical to English, even though they are translated in the display text.

In these scenarios, just use the translated text when generating the voice files. These will still be flagged as problems by the translation web site!
tools/updatelang [diff]
Solomon Peachy
2021-09-29 757766e807: languages: Prefer translated <dest> over untranslated english <voice>

When a prase is translated but the voice is not, default to using the translated phrase over the untranslated English voice
tools/updatelang [diff]
Solomon Peachy
2021-09-29 2ebe69b67a: voice: Enable nightly Serbian & Norweigan voice generation.

The general rule is that languages with at least 90% coverage are enabled.
tools/builds.pm [diff]
Solomon Peachy
2021-09-29 cb2ee6b6cb: voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event

when the voice system is doing queued voice clips you can get a voice_stop event which cancels the cpu boost but the quiet count was not reset to 0 next clip may play unboosted causing stuttering

just boost unconditionally on Q_PLAY it'll unboost after timeout if unneeded
apps/voice_thread.c [diff]
William Wilgus
2021-09-29 b662ff945a: Bugfix AS3525 usb driver unboosted the cpu without first boosting it
firmware/target/arm/as3525/usb-as3525.c [diff]
William Wilgus
2021-09-29 4f450b6e11: Revert "Playlist Viewer: Add file properties to playlist entry menu."

This reverts commit 67716c6b46a7780bff6b80408b3452c01bfbfdc4.

Reason for revert: Only partially working on bare-metal ports, so revert this for now.
apps/playlist_viewer.c [diff]
James Smith
2021-09-29 a7f2d1ffb4: Revert "Fix the build for 67716c6b."

This reverts commit 483563a1b2cd5d463557580498d75a693dd79077.

Reason for revert: Only partially works.
apps/playlist_viewer.c [diff]
James Smith
2021-09-29 eeacffbd15: voice: Allow voiced date format to be overridden

This adds LANG_VOICED_DATE_FORMAT, a format string with these tokens:

Y 4-digit year A Month name m numeric month d numeric day of month

The default (english) is '23 January 2013' In comparison, english-us is 'January 23 2013'
apps/lang/english-us.lang [diff]
apps/lang/english.lang [diff]
apps/talk.c [diff]
Solomon Peachy
2021-09-28 70e72e01d2: talk: Add support for languages that swap the tens position in numbers

For example, English would say "231" as "two hundred thirty one" but many other languages would say "two hundred one and thirty"

So, if VOICE_NUMERIC_TENS_SWAP_SEPARATOR is not an empty string, swap the tens and ones position and use that string ("and" in the above example) as the voiced separator.
apps/lang/dansk.lang [diff]
apps/lang/english-us.lang [diff]
apps/lang/english.lang [diff]
apps/talk.c [diff]
tools/updatelang [diff]
Solomon Peachy
2021-09-28 3cc7509e81: voice: Add default presets for Danish.

(The language remains <75% translated)
tools/voice.pl [diff]
Solomon Peachy
2021-09-28 fe5c1c8126: Revert "voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event"

This reverts commit 4695f80230f0d3e3eb03a4d9aade5253e2d51862.

Reason for revert: Something else is unboosting the thread this is a red herring
apps/voice_thread.c [diff]
William Wilgus
2021-09-28 4695f80230: voice_thread.c ensure cpu gets re-boosted after Q_VOICE_STOP event

reset quiet counter after Q_VOICE_STOP

when the voice system is doing un-queued voice clips you can get a voice_stop event which cancels the cpu boost but the quiet count was not reset next clip will play unboosted causing stuttering
apps/voice_thread.c [diff]
William Wilgus
2021-09-26 6d98c9e6b2: ErosQ Native: Adjust battery % scale

Adjust the battery scale to be a little better. I've set the 100% (discharge) point to be where the battery sags to when it is done charging but still plugged in.

Not quite sure how best to set the charge scale, it's just equal to the discharge scale for now.
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [diff]
Dana Conrad
2021-09-26 38b2648f48: win32: Add a stub for os_modtime() to make sim builds happy
firmware/target/hosted/filesystem-win32.c [diff]
Solomon Peachy
2021-09-21 412e76b487: configure: --no-ccache must disable CCACHE for $HOSTCC too!

Accomplish this by setting CCACHE_DISABLE=true
tools/configure [diff]
Solomon Peachy
2021-09-20 672bbe434b: usb: rename usb_drv_recv() to usb_recv_recv_nonblocking()

IMHO the current name is somewhat misleading:

- usb_drv_send() is blocking and we have usb_drv_send_nonblocking() for the non-blocking case. This inconsistent naming can only promote confusion. (And what would we call a blocking receive?)

- Other hardware abstraction APIs in Rockbox are usually blocking: storage, LCD, backlight, audio... in other words, blocking is the default expected behavior, with non-blocking calls being a rarity.
firmware/drivers/isp1583.c [diff]
firmware/drivers/m66591.c [diff]
firmware/drivers/usb-designware.c [diff]
firmware/export/usb_drv.h [diff]
firmware/target/arm/as3525/usb-drv-as3525.c [diff]
firmware/target/arm/rk27xx/usb-drv-rk27xx.c [diff]
firmware/target/arm/tms320dm320/sansa-connect/tnetv105_usb_drv.c [diff]
firmware/target/arm/usb-drv-arc.c [diff]
firmware/target/arm/usb-s3c6400x.c [diff]
firmware/target/arm/usb-tcc.c [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4740.c [diff]
firmware/target/mips/ingenic_jz47xx/usb-jz4760.c [diff]
firmware/usbstack/usb_core.c [diff]
firmware/usbstack/usb_hid.c [diff]
firmware/usbstack/usb_serial.c [diff]
firmware/usbstack/usb_storage.c [diff]
Aidan MacDonald
2021-09-20 99f333c64f: usb_hid: fix accidental fallthrough

Successful SET REPORT requests would spuriously fail because of the fall through to GET REPORT.
firmware/usbstack/usb_hid.c [diff]
Aidan MacDonald
2021-09-20 483563a1b2: Fix the build for 67716c6b.
apps/playlist_viewer.c [diff]
James D. Smith
2021-09-20 0ca0940f01: Make USB Charging default value configurable per device

A reasonable default assumption for a user would be that they can plug their device into a USB AC adapter and it will charge with as much current as it reasonably can. With the previous default, an AC adapter will only do 100mA, basically a trickle charge.

Make this configurable default per-device, so as not to break old devices without testing.

Define TARGET_USB_CHARGING_DEFAULT to USB_CHARGING_FORCE to use the new default.

Tested on both erosQ Native and M3K.
apps/settings_list.c [diff]
firmware/export/config/erosqnative.h [diff]
firmware/export/config/fiiom3k.h [diff]
Dana Conrad
2021-09-20 5765deb08e: Add Fabrice Bellard to the CREDITS.
docs/CREDITS [diff]
James D. Smith
2021-09-20 760277e096: Dir cache: Fix resume of relative path playlists.

Slightly modified from original patch by Fabrice Bellard.
apps/playlist.c [diff]
firmware/common/pathfuncs.c [diff]
firmware/export/pathfuncs.h [diff]
James D. Smith
2021-09-20 67716c6b46: Playlist Viewer: Add file properties to playlist entry menu.
apps/playlist_viewer.c [diff]
James D. Smith
2021-09-19 5312fe6bda: FS13255: Partial update of Hungarian Translation (Gergely Békési)

(plus a lot of patch rebaseing by myself)
apps/lang/magyar.lang [diff]
Solomon Peachy
2021-09-18 60125f6bc9: Pictureflow: Update for tag_virt_canonicalartist.
apps/plugins/pictureflow/pictureflow.c [diff]
James D. Smith
2021-09-18 fb04b9b5ee: Database: Merge 'Album Artist' entry with 'Artist' entry.

-Link 'Artist' entry to canonicalartist field.
-Convert all possible users of artist field to canonicalartist.
-Tweak 'Same as current -> Artist' menu to also include albumartist field matches.
apps/tagnavi.config [diff]
James D. Smith
2021-09-18 fcb9c06852: Database: Fix tag_albumartist; new tag_virt_canonicalartist.
apps/tagcache.c [diff]
apps/tagcache.h [diff]
apps/tagtree.c [diff]
James D. Smith
2021-09-18 cb0f4599e1: FS #13304: Updated Dutch translation (Issa Beganović)
apps/lang/nederlands.lang [diff]
Solomon Peachy
2021-09-18 7bf3b08303: FS #13309: Updated Polish Translation (Adam Rak)
apps/lang/polski.lang [diff]
Solomon Peachy
2021-09-18 52d4339c3f: Synchronize english-us "translation"
apps/lang/english-us.lang [diff]
Solomon Peachy
2021-09-16 78f0dc8175: File properties plugin: Add bitrate.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 a9d3e09611: File properties plugin: Add frequency.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 41e471e50e: File properties plugin: Add disc number.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 5ddfd37a8c: File properties plugin: Add track.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 7035e2e2b9: File properties plugin: Add year.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 3acbab15a1: File properties plugin: Add composer.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 f3874bda64: File properties plugin: Add comment.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 f971200cee: File properties plugin: Add genre.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-16 7882e093b2: File properties plugin: Add album artist.
apps/lang/english.lang [diff]
apps/plugins/properties.c [diff]
James D. Smith
2021-09-12 67c4231e34: iPod mini backlight initialization

Fixes backlight not turning on after booting (tested on an iPod Mini 2G).

backlight_hw_init() copied from iPod 4G.
firmware/target/arm/ipod/backlight-mini1g_mini2g.c [diff]
firmware/target/arm/ipod/backlight-target.h [diff]
Christian Soffke
2021-09-05 4ba3231457: Fiio M3K: Fix Yes/No Keymap

The yes/no keymap does not fall back to the Standard keymapping, so keys other than Back and Power do not cancel, though the prompt says "any other key".

Adding fallback to standard context as well as explicit Left, Right, Vol+ and Vol- as they're not present in the standard context.

Tested on physical m3k
apps/keymaps/keymap-fiiom3k.c [diff]
Dana Conrad
2021-09-05 17263a813b: ErosQ (both): avoid clipping due to DC offset bandaid

Set the maximum volume on both hosted and native ports to -2 dB.

Verified behavior here on native and by borkitall on irc for hosted.
firmware/export/eros_qn_codec.h [diff]
firmware/export/erosqlinux_codec.h [diff]
Dana Conrad
2021-09-04 3e52c7c734: rockboxdev: Add 'g++' to the list of required tools for building toolchains
tools/rockboxdev.sh [diff]
Solomon Peachy
2021-08-31 a8253c57dd: lib/argparse fix red
apps/plugins/lib/arg_helper.c [diff]
apps/plugins/lib/arg_helper.h [diff]
William Wilgus
2021-08-31 c04a944c98: lib/argparse scale decimals to int for return to user

scales the fractional portion of the parsed number by ARGPARSE_FRAC_DEC_MULTIPLIER

Example ARGPARSE_FRAC_DEC_MULTIPLIER = 10 000 meaning .0009 returns 9 , 9 / 10000 = .0009
.009 returns 90
.099 returns 990
.09 returns 900
.9 returns 9000
.9999 returns 9999
apps/plugins/lib/arg_helper.c [diff]
apps/plugins/lib/arg_helper.h [diff]
William Wilgus
2021-08-31 d929444a41: iPod: Fix Yes/No Keymap

Add fallback to CONTEXT_STD and add explicit Play button cancel - Play button is not present in standard context, so it won't do anything if unknown actions are ignored.

tested on ipod simulator
apps/keymaps/keymap-ipod.c [diff]
Dana Conrad
2021-08-29 c11ed99cb4: bugfix: redraw yes/no screen after a full skin update

This fixes a bug reported on IRC:

1. Set 'bookmark on stop' to 'ask' 2. Play a track from the file browser 3. Stop playback, yes/no screen briefly flashes then disappears.

The screen still handles input correctly but the prompt will not be displayed on the LCD. Long story short, get_action() can cause the skin engine to do a full redraw which cleared the screen and erased the prompt.

There is a special event, GUI_EVENT_NEED_UI_UPDATE, which the list code uses to avoid precisely this problem.

Hooking up a handler for this event and redrawing the yes/no prompt fixes the bug.
apps/gui/yesno.c [diff]
Aidan MacDonald
2021-08-28 6322e66219: Remove long-deprecated old style EQ settings

These were deprecated by 1eb17dc9f4 back in 2013 just prior to the 3.13 release. We've had 3.14 and 3.15 since then and I guess nobody will complain if we finally remove them (fingers crossed...)

Also fix a line which got missed when converting hardcoded numbers to EQ_NUM_BANDS in that commit.
apps/menus/eq_menu.c [diff]
apps/settings_list.c [diff]
Aidan MacDonald
2021-08-27 965572705b: plugin lib/arg_helper parse 'command line' args

add a helper function to allow plugins to parse the parameter string passed into plugins support included for bool, char, string and numbers+decimals
apps/plugins/lib/SOURCES [diff]
apps/plugins/lib/arg_helper.c [new]
apps/plugins/lib/arg_helper.h [new]
William Wilgus
2021-08-26 cab8cea0f0: lcd_putsxyofs 16 bit lcd_mono_bitmap_part [AS] part duex

'Bugfix' mono_bitmap_part reads ahead in the buffer, if the height is <= char bit pixels other memory gets read found with [Address Sanitizer]

also g#3332 since this is clearly a problem across the code instead place the check for height < 8 in the lcd_mono_bitmap_part function

second try places the check above the negative y offset this was causing glitches on the Q1 and likely other TS targets since a negative y was added to height it made it < CHAR_BIT setting stride = 0 even though the bitmap was >= CHAR_BIT high
firmware/drivers/lcd-16bit-common.c [diff]
William Wilgus
2021-08-26 30e96a3732: quickscreen: fix EQ enable not working in quickscreen

The EQ enabled setting needs to call into the DSP core when it's changed but this was only hooked into the EQ menu. The quickscreen uses option_select_next_val() so those DSP hooks were not getting called because the setting did not have any callback defined.

It seems this bug was introduced by 362f7a3220 removing the blanket call to settings_apply(). Other settings might be affected too.
apps/menus/eq_menu.c [diff]
apps/menus/eq_menu.h [diff]
apps/settings_list.c [diff]
Aidan MacDonald
2021-08-26 b2386405b9: xduoox3: Disable bootloader USB mode entirely

It's not yet working and because all storage is removable (and the OF works fine) it's of limited utility aynway.
firmware/export/config/xduoox3.h [diff]
Solomon Peachy
2021-08-26 93c98606f1: xduoox3: Further bootloader improvements

* Power button is what forces entry into USB mode
(can't use the other buttons due to the long SADC warmup)
* Inching closer to working USB disk mode (starts then disconnects!
bootloader/xduoox3.c [diff]
Solomon Peachy
2021-08-26 987d195134: Plugin Api add core bitmaps Fix Yellow
apps/plugin.c [diff]
William Wilgus
2021-08-26 b56372bbcb: Plugin Api add core bitmaps

share all the core icons with plugins these are all small mono icons like usb plug icon or play, fast forward, rewind icons

--include the icon_helper function
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/lib/SOURCES [diff]
apps/plugins/lib/icon_helper.c [new]
apps/plugins/lib/icon_helper.h [new]
apps/recorder/icons.c [diff]
apps/recorder/icons.h [diff]
William Wilgus
2021-08-25 cbf1970b56: Shanling Q1: minor update to keymap

- Enable repeat for prev/next keys
- Provide a way to access the context menu using buttons
- Update the manual
apps/keymaps/keymap-shanlingq1.c [diff]
manual/platform/keymap-shanlingq1.tex [diff]
Aidan MacDonald
2021-08-25 dbd051394e: Revert "lcd_putsxyofs 16 bit lcd_mono_bitmap_part [AS]"

This reverts commit 49edfc237ba9ae27eee5e915e86989d9ee01b1da.

Reason for revert: font rendering bug, https://gist.github.com/amachronic/5fa75da280432127de4b44ee2d760281
firmware/drivers/lcd-16bit-common.c [diff]
William Wilgus
2021-08-22 97b0e5b5a1: xduoox3: More minor bootloader tweaks
bootloader/xduoox3.c [diff]
Solomon Peachy
2021-08-22 d1653bc4d8: touchscreen: fix smooth scrolling in lists

This fixes those annoying jumps that happen when you hit the end of a list while scrolling.
apps/gui/bitmap/list.c [diff]
apps/gui/list.c [diff]
apps/gui/list.h [diff]
Aidan MacDonald
2021-08-22 569b165cff: touchscreen: handle scrollbar properly when UI viewport is used
apps/gui/bitmap/list.c [diff]
Aidan MacDonald
2021-08-22 a59a629514: filetypes: handle missing or empty viewers.config

We want to load builtin filetypes and other config files even if there is a problem loading viewers.config. A lot of menus expect the builtin types to be there and don't work if they're missing.
apps/filetypes.c [diff]
Aidan MacDonald
2021-08-22 d282424ef2: xduoox3: Allow user to gracefully exit USB disk mode by pressing power
bootloader/xduoox3.c [diff]
Solomon Peachy
2021-08-22 4c745fe8ac: xduoox3: A few manual improvements

* Fix a typo in a URL
* Note how to enter the OF from the bootloader
* Document how to perform a hard reset
manual/getting_started/xduoox3_install.tex [diff]
manual/rockbox_interface/main.tex [diff]
Solomon Peachy
2021-08-22 7059183438: bootloader: nuke a long-unused (and broken) code block
bootloader/common.c [diff]
Solomon Peachy
2021-08-22 2c9e2db721: xduoox3: More bootloader updates

* Rework the LCD initialization a bit
* Power off after 5 seconds if we hit a fatal error
* Turn on verbose output if PLAY is held down on powerup
* Minor code style cleanups

The goal is to not perform the LCD init unless it's needed; ie only if we run into an error or enter USB mode.
bootloader/xduoox3.c [diff]
Solomon Peachy
2021-08-22 e07c460eef: xduoox3: Bootloader improvements:

* Explicitly clear the caches prior to launching the binary
* Ensure the function that launches the binary is in iram
* Re-sequenced some of the subsystem initializations
* Fixes for USB mode
bootloader/xduoox3.c [diff]
Solomon Peachy
2021-08-20 247258b9d2: manual: Don't expect first char of name in CREDITS to be ASCII.

Fixes some names not showing in the manual.

Note that there's one name left not showing due to LaTeX unicode support missing the characters.
manual/credits.pl [diff]
Dominik Riebeling
2021-08-20 356133d321: manual: Add workaround for older KOMAscript versions.

KOMAscript 3.28 changes \ifpdfoutput to \Ifpdfoutput. Add a check and redefine the new command as the old one if it's missing since only the name was changed. Not all Linux distros have a recent enough version yet.
manual/preamble.tex [diff]
Dominik Riebeling
2021-08-19 c302c157d5: peakmeter: re-enable on hosted platforms

Has been disabled since HW codec support was dropped, but works fine. Tested on Surfans F20.
apps/recorder/peakmeter.c [diff]
Ulrich Hecht
2021-08-19 0679faf65d: lib/helper add talk_val()

talk_value_decimal() replaced talk_value()
apps/plugins/announce_status.c [diff]
apps/plugins/lib/helper.c [diff]
apps/plugins/lib/helper.h [diff]
apps/plugins/mpegplayer/mpeg_settings.c [diff]
William Wilgus
2021-08-19 24e8fa317e: plugins trade talk_value for talk_value_decimal

talk_value is just talk_value_decimal with 0 decimals

lets add the extended function instead

static inline int talk_val(long n, int unit, bool enqueue)
{
#define NODECIMALS 0 return rb->talk_value_decimal(n, unit, NODECIMALS, enqueue);
}
apps/plugin.c [diff]
apps/plugin.h [diff]
apps/plugins/announce_status.c [diff]
apps/plugins/mpegplayer/mpeg_settings.c [diff]
apps/plugins/properties.c [diff]
apps/plugins/vbrfix.c [diff]
William Wilgus
2021-08-18 4cbb5b4201: x1000: trigger the virtual LED on disk activity
firmware/target/mips/ingenic_x1000/msc-x1000.c [diff]
firmware/target/mips/ingenic_x1000/msc-x1000.h [diff]
Aidan MacDonald
2021-08-17 3e37013218: misc.c strip_extension() cleanup

optimize + add some error checking of inputO
apps/misc.c [diff]
William Wilgus
2021-08-15 5a4cc8da3f: Drop HAVE_RTC_RAM

Only Archos players ever used this feature and it isn't implemented on any current targets.
apps/gui/wps.c [diff]
apps/main.c [diff]
apps/settings.c [diff]
firmware/export/config/android.h [diff]
firmware/export/config/cowond2.h [diff]
firmware/export/config/nokian8xx.h [diff]
firmware/export/config/nokian900.h [diff]
firmware/export/config/pandora.h [diff]
firmware/export/config/samsungypr0.h [diff]
firmware/export/config/sansam200v4.h [diff]
firmware/export/config/sdlapp.h [diff]
Aidan MacDonald
2021-08-15 de578bde1f: Add advanced build option to omit building plugins

Compiling the plugins takes quite a long time and is unnecessary if you're only working on the core code. Having an option is nicer than having to edit the configure script by hand.
tools/configure [diff]
Aidan MacDonald
2021-08-15 cc6b036ef5: logf: Fix an incorrect fix in 835d0c737a7
firmware/logf.c [diff]
Solomon Peachy
2021-08-15 eafdba87f8: icon.c bug fix handle read errors

read errors are negative buf_sz was a unsignbed int
apps/gui/icon.c [diff]
William Wilgus
2021-08-14 2ce7c716c3: apps/open_plugins cast menu id to (void*)
apps/plugins/open_plugins.c [diff]
William Wilgus
2021-08-14 25cebf2f85: Fix red from 04fe77a4
firmware/target/arm/pp/system-target.h [diff]
Solomon Peachy
2021-08-14 04fe77a465: Remove the (very) incomplete port for the Tatung TPJ-1102

It was barely even a stub, and hasn't seen any development since 2009
apps/plugins/blackjack.c [diff]
apps/plugins/invadrox.c [diff]
bootloader/SOURCES [diff]
bootloader/tpj1022.c [deleted]
firmware/SOURCES [diff]
firmware/export/config.h [diff]
firmware/export/config/tatungtpj1022.h [deleted]
firmware/target/arm/pp/system-pp502x.c [diff]
firmware/target/arm/pp/system-target.h [diff]
firmware/target/arm/pp/usb-fw-pp502x.c [diff]
firmware/target/arm/tatung/app.lds [deleted]
firmware/target/arm/tatung/boot.lds [deleted]
firmware/target/arm/tatung/tpj1022/adc-target.h [deleted]
firmware/target/arm/tatung/tpj1022/backlight-target.h [deleted]
firmware/target/arm/tatung/tpj1022/backlight-tpj1022.c [deleted]
firmware/target/arm/tatung/tpj1022/button-target.h [deleted]
firmware/target/arm/tatung/tpj1022/button-tpj1022.c [deleted]
firmware/target/arm/tatung/tpj1022/lcd-tpj1022.c [deleted]
firmware/target/arm/tatung/tpj1022/power-tpj1022.c [deleted]
firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c [deleted]
tools/builds.pm [diff]
tools/configure [diff]
utils/themeeditor/resources/targetdb [diff]
Solomon Peachy
2021-08-14 786d06742a: Remove Samsung YP-Z5 port

It has only a couple GB of onboard flash storage with no storage driver in Rockbox. It hasn't seen any meaningful development since its initial commit, it's not on the build farm, and the bootloader build is broken by other refactoring.
apps/SOURCES [diff]
apps/keymaps/keymap-ypz5.c [deleted]
firmware/SOURCES [diff]
firmware/export/config.h [diff]
firmware/export/config/samsungypz5.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/audio-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/backlight-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/backlight-ypz5.c [deleted]
firmware/target/arm/imx233/samsung-ypz5/button-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/button-ypz5.c [deleted]
firmware/target/arm/imx233/samsung-ypz5/debug-ypz5.c [deleted]
firmware/target/arm/imx233/samsung-ypz5/fmradio-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/ftl-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/lcd-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/lcd-ypz5.c [deleted]
firmware/target/arm/imx233/samsung-ypz5/powermgmt-target.h [deleted]
firmware/target/arm/imx233/samsung-ypz5/powermgmt-ypz5.c [deleted]
firmware/target/arm/imx233/touchscreen-imx233.c [diff]
tools/configure [diff]
tools/scramble.c [diff]
Aidan MacDonald
2021-08-14 62260aa705: touchscreen: Fix softlock handling

Expands upon c067b344e8. The bug mentioned in that commit affects touchscreens as well as touchpads, plus touchscreens were subject to a few other issues because 'last->tick' was not always set.
apps/action.c [diff]
Aidan MacDonald
2021-08-14 8c36d8b131: lua Fix a few potential bugs
apps/plugins/lua/lauxlib.c [diff]
apps/plugins/lua/lmathlib.c [diff]
apps/plugins/lua/lparser.c [diff]
William Wilgus
2021-08-13 aad15d5cd7: code cleanup encase ;; in brackets {;;}
apps/plugins/lua/tlsf_helper.c [diff]
apps/plugins/pictureflow/pictureflow.c [diff]
apps/plugins/test_viewports.c [diff]
William Wilgus
2021-08-13 da97524252: lua strftime fix out of scope buffer sbuf goes out of scope of the case statement
apps/plugins/lua/strftime.c [diff]
William Wilgus
2021-08-13 2df306923a: file_internal.c guard file_cache_reset() from null pointer

I feel this is probably unlikely to be called with a NULL pointer for cachep but being that we are already doing the check why not guard file_cache_reset as well
firmware/common/file_internal.c [diff]
William Wilgus
2021-08-12 6de6e1459d: Eros Q Hosted: Apply DC Bias to PCM Data

Similar to the native port, the hosted port benefits from adding a -1 dc bias to the PCM data. This prevents almost all clicking artifacts.
firmware/export/erosqlinux_codec.h [diff]
firmware/target/hosted/pcm-alsa.c [diff]
Dana Conrad
2021-08-12 235e41578b: metadata/mp3data.c init vars & add sanity checks
lib/rbcodec/metadata/mp3data.c [diff]
William Wilgus
2021-08-12 30945f1180: metadata/metadata_common.c check read for proper bytes read
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2021-08-12 f05a7a10a6: metadata/metadata_common.c WS changes
lib/rbcodec/metadata/metadata_common.c [diff]
William Wilgus
2021-08-12 7aa0e0a898: metadata/asf.c ensure variable init & add sanity checks
lib/rbcodec/metadata/asf.c [diff]
William Wilgus
2021-08-11 d8bec3da63: enc_config.c don't overrun mp3_enc_bitr[] array
apps/enc_config.c [diff]
William Wilgus
2021-08-11 1dd531ff03: codec_thread.c don't overrun audio_formats[] array
apps/codec_thread.c [diff]
William Wilgus
2021-08-11 e3e72d6dba: metadata/mp4.c fix small oversight / bug

didn't set the genre string to null on case entry means read failure would leave genre string indeterminate

add explicit NULL & leave genre uninitialized
lib/rbcodec/metadata/mp4.c [diff]
William Wilgus
2021-08-11 c9e9558044: metadata/mp4.c check for read errors skip buffer appropriately

WIP
lib/rbcodec/metadata/mp4.c [diff]
William Wilgus
2021-08-10 77a98ada12: Eros Q Native: Make Mute logic channel-independent

An oversight on my part meant that setting channel balance to 100% L or 100% R would mute both channels - this logic will prevent that.
firmware/drivers/audio/eros_qn_codec.c [diff]
Dana Conrad
2021-08-10 cdd1f90131: touchscreen: Respect list item selection size

Some lists have tall items that span more than one line of text, eg. the bookmark menu or ID3 tag menu. The touchscreen code didn't handle these menus correctly and touching on the lower part of a list item could select "between" two items, leading to incorrect rendering and behavior due to callers relying on the selected item being properly aligned to the selection size. Fix this by ensuring the touch code only generates properly aligned selections.
apps/gui/bitmap/list.c [diff]
Aidan MacDonald
2021-08-10 b103b07503: touchscreen: Fix annoying bug when switching touchscreen modes

Changing the touchscreen mode in the settings menu required a reboot to fully apply because this code was trying to reapply old settings. This is a hack. IMHO to fix it properly the behavior of touchscreen mode needs to be changed so code that needs a specific mode doesn't need to twiddle global state, but that's a bigger undertaking.
apps/menu.c [diff]
Aidan MacDonald
2021-08-10 69420e796c: touchscreen: Use pointing mode in the yes/no screen

Seems to fix the unintuitive / inaccurate behavior of this screen. Rejigger the generic touchscreen keymap because the 3x3 buttons are no longer used. Also map physical keys for yes/no on the Q1.
apps/gui/yesno.c [diff]
apps/keymaps/keymap-shanlingq1.c [diff]
apps/keymaps/keymap-touchscreen.c [diff]
Aidan MacDonald
2021-08-10 a8063054f9: skin engine: handle bitmap read errors appropriately
apps/gui/skin_engine/skin_parser.c [diff]
Aidan MacDonald
2021-08-10 614b189f7a: lua rockaux.c filetol fix invalid conditional
apps/plugins/lua/rockaux.c [diff]
William Wilgus
2021-08-10 ee6b737b65: pcm_record.c iAudioM5 FixRed

Share a bit of code in order to free up iRam for the iAudio M5
apps/recorder/pcm_record.c [diff]
William Wilgus
2021-08-10 4fb5aeb096: recorder/pcm_record.c cleanup copy function

re: coverity write_write_order: In long(*s++) + *s++, s is written in *s++ and written in long(*s++) but the order in which the side effects take place is undefined because there is no intervening sequence point.
apps/recorder/pcm_record.c [diff]
William Wilgus
2021-08-09 2f0fd66e44: re-synchronize english-us "translation"
apps/lang/english-us.lang [diff]
Solomon Peachy
2021-08-09 e4c5b082e8: inflate: fix public function pointers
firmware/include/inflate.h [diff]
James Buren
2021-08-08 275c762bb2: As3525 wavpack_enc document some intentional switch fall through
firmware/target/arm/as3525/audio-as3525.c [diff]
firmware/target/arm/as3525/debug-as3525.c [diff]
lib/rbcodec/codecs/wavpack_enc.c [diff]
William Wilgus
2021-08-07 0a6d7abd13: metadata/asap.c consolidate read char function and check return values

and a bit of cleanup using macros to make the code easier to follow
lib/rbcodec/metadata/asap.c [diff]
William Wilgus
2021-08-07 da778a1783: metadata/asap.c WS cleanup
lib/rbcodec/metadata/asap.c [diff]
William Wilgus
2021-08-07 5311ff0173: tagcache: Don't treat tag_virt_basename as a numeric tag
apps/tagcache.h [diff]
Aidan MacDonald
2021-08-07 cf3fa437fc: Remove unhelpful unsigned casting trick
apps/plugins/imageviewer/jpeg/jpeg_decoder.c [diff]
Aidan MacDonald
2021-08-07 39fff5cb53: move PCM_NATIVE_BITDEPTH definiton into global config code
firmware/export/audiohw.h [diff]
firmware/pcm_sw_volume.c [diff]
firmware/target/mips/ingenic_x1000/pcm-x1000.c [diff]
Solomon Peachy
2021-08-07 eeb0aaf36f: fiiom3k: Add bookmark screen keymapping

Forgot to commit this back around the time I did the manual
apps/keymaps/keymap-fiiom3k.c [diff]
Aidan MacDonald
2021-08-07 a2bbd1a549: Fix warnings from 56b0dde545

Need a default bit depth in pcm-x1000.c
firmware/target/mips/ingenic_x1000/pcm-x1000.c [diff]
Dana Conrad
2021-08-07 56b0dde545: Higher bitdepth software volume scaling

Operates between 0 and -74 dB (mute) without issue
firmware/drivers/audio/eros_qn_codec.c [diff]
firmware/export/config/erosqnative.h [diff]
firmware/export/eros_qn_codec.h [diff]
firmware/pcm_sw_volume.c [diff]
firmware/target/mips/ingenic_x1000/pcm-x1000.c [diff]
Dana Conrad
2021-08-07 16b0098256: ErosQ Native: Add DC Offset to PCM data

A small negative offset seems to silence all play/pause clicking on the PCM5102A.

Also adding PCM soft muting, and muting the headphone amp when the headphones are detected as removed. This has been tested to not cause any unintended side effects on the line out.

Also confirmed the numerical dB values are (approx.) correct.
firmware/drivers/audio/eros_qn_codec.c [diff]
firmware/export/eros_qn_codec.h [diff]
firmware/pcm_sw_volume.c [diff]
Dana Conrad
2021-08-07 57293f1fd9: metadata/vfx.c cleanup string and character handling
lib/rbcodec/metadata/vtx.c [diff]
William Wilgus
2021-08-07 60933d98c6: inflate: import initial module for deflate decompression

This will eventually be used by the ZIP module and other things that support DEFLATE based streams.
firmware/SOURCES [diff]
firmware/common/inflate.c [new]
firmware/include/inflate.h [new]
James Buren
2021-08-07 603e749c1d: metadata/smaf.c handle read errors
lib/rbcodec/metadata/smaf.c [diff]
William Wilgus
2021-08-07 8a8fd3d4a3: metadata/mp3data.c set data to 0 in case of read error
lib/rbcodec/metadata/mp3data.c [diff]
William Wilgus
2021-08-06 2008b7d1b0: Fix yellow from d541a72a
apps/menus/eq_menu.c [diff]
Aidan MacDonald
2021-08-06 257ba1d2e0: Fix possible negative fd in playlist.c
apps/playlist.c [diff]
Aidan MacDonald
2021-08-06 02b940396b: Be sure to wipe id3 tag after failed parse in playback.c
apps/playback.c [diff]
Aidan MacDonald
2021-08-06 d541a72a0e: Bugfixes in eq_menu.c
apps/menus/eq_menu.c [diff]
Aidan MacDonald
2021-08-06 1a9a5fc279: Fix wrong printf format in system-hosted.c
firmware/target/hosted/system-hosted.c [diff]
Aidan MacDonald
2021-08-06 b8b195a296: Fix hosted glibc backtrace

According to backtrace(3) man page, the string returned from backtrace_symbols() contains the return address so we shouldn't need to print it ourselves.
firmware/target/hosted/backtrace-glibc.c [diff]
Aidan MacDonald
2021-08-06 6b1b7b6016: Fix use of uninitialized variable in mp4 metadata parser
lib/rbcodec/metadata/mp4.c [diff]
Aidan MacDonald
2021-08-06 34fcea0b20: Fix path buffer overflow in screendump

Overflow is due to a hidden assumption in create_datetime_filename() and create_numbered_filename() where buffer must be >= MAX_PATH bytes.
firmware/screendump.c [diff]
Aidan MacDonald
2021-08-06 835d0c737a: logf: Fix two issues with logf_panic_dump()

* It had a (read) buffer overflow when dumping the stuff on the back half of the buffer
* a highly questionable code construct was nuked
firmware/export/logf.h [diff]
firmware/logf.c [diff]
Solomon Peachy
2021-08-06 da45b37fac: tools/iriver: fix resource management in encode/decode functions
tools/iriver.c [diff]
James Buren
2021-08-05 a20755e9ef: test_disk: Minor fix in an error path

...Log the variable containing the actual error
apps/plugins/test_disk.c [diff]
Solomon Peachy
2021-08-05 9f0f2c6658: metadata: Fix sign extension in get_uint64_le() routine
lib/rbcodec/metadata/metadata_common.c [diff]
Solomon Peachy
2021-08-05 566d836ac6: mikmod: Uninitialized variable used in a control flow decision
apps/plugins/mikmod/mikmod.c [diff]
Solomon Peachy
2021-08-05 f3010c6a8e: hosted: Fix rtc_write_datetime() error handling

(if mktime() fails, don't attempt to write its result to the RTC)
firmware/target/hosted/rtc.c [diff]
Solomon Peachy
2021-08-05 cb6b0d2c0e: disk.c ensure a valid volume is returned from get_free_volume()

volume is used for element math and indexing into buffers
-1 volume is bad
firmware/common/disk.c [diff]
William Wilgus
2021-08-05 d57900ae12: misc.c format_sound_value guard division by zero
apps/misc.c [diff]
William Wilgus
2021-08-05 848633f921: lib/skin_parser check that malloc succeeded
lib/skin_parser/skin_parser.c [diff]
William Wilgus
2021-08-05 03a6eb63f1: Simplify clamp_component

Surprise surprise: the compiler generates shorter, branch-free code if we don't try to be clever with signed/unsigned casting tricks.
apps/recorder/jpeg_common.h [diff]
Aidan MacDonald
2021-08-04 429a7e2c0a: Avoid buffer overflow when generating bookmark file name
apps/bookmark.c [diff]
Aidan MacDonald
2021-08-04 bdd9c8dfc8: plugins: Fix issues in 2048

One of these was an unintentional fallthrough -- if you said no to
'quit without saving' it would save and quit.
apps/plugins/2048.c [diff]
Aidan MacDonald
2021-08-04 005c414e5f: Document intentional fallthroughs + fix harmless unintended ones
apps/debug_menu.c [diff]
apps/gui/list.c [diff]
apps/gui/statusbar-skinned.c [diff]
apps/gui/wps.c [diff]
apps/onplay.c [diff]
apps/plugins/bubbles.c [diff]
apps/plugins/calculator.c [diff]
apps/plugins/chessbox/chessbox.c [diff]
apps/plugins/doom/p_ceilng.c [diff]
apps/plugins/doom/p_floor.c [diff]
apps/plugins/goban/goban.c [diff]
apps/plugins/imageviewer/imageviewer.c [diff]
apps/plugins/lrcplayer.c [diff]
apps/plugins/metronome.c [diff]
apps/plugins/mpegplayer/libmpeg2/header.c [diff]
apps/plugins/random_folder_advance_config.c [diff]
apps/plugins/rocklife.c [diff]
apps/plugins/rockpaint.c [diff]
apps/tagcache.c [diff]
apps/usb_keymaps.c [diff]
firmware/common/file_internal.c [diff]
firmware/common/vuprintf.c [diff]
lib/rbcodec/codecs/liba52/downmix.c [diff]
lib/rbcodec/dsp/crossfeed.c [diff]
Aidan MacDonald
2021-08-04 ef41cc6623: Revert "rbutil: Remove done() signal from Themes Install window."

The done() signal is acutally needed to indicate the installation being finished. Fixes installation being stuck after themes install.

This reverts commit fb6840e57260b1da35924914d47731e06597afea.
rbutil/rbutilqt/themesinstallwindow.cpp [diff]
rbutil/rbutilqt/themesinstallwindow.h [diff]
Dominik Riebeling
2021-08-04 c522917644: plugins/resistor: Fix incorrect check for a valid 4th band value
apps/plugins/resistor.c [diff]
Solomon Peachy
2021-08-04 37bfcab23f: powermgmt: Clean up some convoluted #ifdefs

Makes it more explicit what code is used under which circumstances.
firmware/powermgmt.c [diff]
Solomon Peachy
2021-08-03 0d0640e57a: menu.c guard against NULL menu, list, setting pointers apps/menu.c [diff]
William Wilgus
2021-08-03 074daea51f: lua fix potential null warning

I'm not sure this would happen but I suspect its possible to get malformed data back from lineinfo as this is how the error system tracks code flow and this is a hacked add-on to allow RLE (run length encoding) of said code flow data
apps/plugins/lua/lcode.c [diff]
William Wilgus
2021-08-03 1fd190d02d: mask_select guard against null pointers
apps/gui/mask_select.c [diff]
William Wilgus
2021-08-03 36e48a8bb2: icon.c guard against negative error values bytesread is copied to an unsigned int for core_shrink
apps/gui/icon.c [diff]
William Wilgus
2021-08-03 93c9d675af: folder_select prevent directory handle leak on error
apps/gui/folder_select.c [diff]
William Wilgus
2021-08-03 429eedf49e: list-skinned.c check label pointer for validity
apps/gui/bitmap/list-skinned.c [diff]
William Wilgus
2021-08-03 382b52b120: filetypes.c filesize() guard against negative error values buffer size is copied to an unsigned int for core_alloc
apps/filetypes.c [diff]
William Wilgus
2021-08-03 1fc4a17e1c: language.c fix possible buffer overrun

ensure zero termination regardless of data read from lang file
apps/language.c [diff]
William Wilgus
2021-08-03 3b6c3d769f: open_plugins bugfix failure to save

if you added a plugin through the core settings and then used the shortcut immediately the entry would never get flushed to disk
apps/open_plugin.c [diff]
apps/root_menu.c [diff]
William Wilgus
2021-08-02 0501af8b06: metadata/flac.c fix potential buffer overrun
lib/rbcodec/metadata/flac.c [diff]
William Wilgus
2021-08-02 247731fe8c: id3tags.c check for buffer overrun
lib/rbcodec/metadata/id3tags.c [diff]
William Wilgus
2021-08-02 2346a7aa6d: playlist_catalog fix strcpy overlap, potential buffer overrun
apps/playlist_catalog.c [diff]
William Wilgus
2021-08-02 83653023d4: tagcache.c clean up
apps/tagcache.c [diff]
William Wilgus
2021-08-01 a2fd00cf38: Software Volume: Remove sample rounding
firmware/pcm_sw_volume.c [diff]
Dana Conrad
2021-07-31 ecf0d631e7: tagcache.c Fix potential buffer overruns WIP

Needs tested
apps/tagcache.c [diff]
William Wilgus
2021-07-31 7413442411: tagcache.c WS changes
apps/tagcache.c [diff]
William Wilgus
2021-07-31 fad4c75163: crc32/adler32: add full copyright notice to source files
firmware/common/adler32.c [diff]
firmware/common/crc32.c [diff]
James Buren
2021-07-30 f32fc84ef6: adler32: import adapted implementation from tinf/zlib

This adds an adapted version of the adler32 algorithm from tinf/zlib which will be necessary to support ZLIB deflate streams in the future.
firmware/SOURCES [diff]
firmware/common/adler32.c [new]
firmware/include/adler32.h [new]
James Buren
2021-07-30 ee05b8574a: playlist.c fix multitude of sins Invalid Control file on USB unplug?

failure to close file handles reading memory prior to buffer on error loop variable integer overflow on error
apps/playlist.c [diff]
William Wilgus
2021-07-30 f9c5d1fccf: open_plugin.c (CORE) File input Bugfixes

Explicitly Null terminate char fields 0 is a valid file descriptor
apps/open_plugin.c [diff]
William Wilgus
2021-07-30 ea438ee132: cuesheet.c Fix potential NULL in INDEX parsing

untested
apps/cuesheet.c [diff]
William Wilgus
2021-07-30 7318d393ea: libc: atoi() is supposed to return 0 if handed a NULL pointer
firmware/libc/atoi.c [diff]
Solomon Peachy
2021-07-25 2e9443104f: rbcodec: Fix typo in makefile

Hopefully this will fix all those random build failures.
lib/rbcodec/codecs/codecs.make [diff]
Aidan MacDonald
2021-07-25 05d4d6a4f2: Fix remaining yellow from e532714d1f
firmware/target/mips/ingenic_jz47xx/pcm-jz4760.c [diff]
Aidan MacDonald
2021-07-25 148fac6f34: Fix yellow from e532714d1f
firmware/target/arm/imx233/pcm-imx233.c [diff]
firmware/target/mips/ingenic_jz47xx/pcm-jz4740.c [diff]
Aidan MacDonald
2021-07-25 e532714d1f: pcm: Remove unused function pcm_play_dma_get_peak_buffer()
firmware/export/pcm-internal.h [diff]
firmware/pcm_sw_volume.c [diff]
firmware/target/arm/as3525/pcm-as3525.c [diff]
firmware/target/arm/imx233/pcm-imx233.c [diff]
firmware/target/arm/imx31/gigabeat-s/pcm-gigabeat-s.c [diff]
firmware/target/arm/pcm-telechips.c [diff]
firmware/target/arm/pp/pcm-pp.c [diff]
firmware/target/arm/rk27xx/pcm-rk27xx.c [diff]
firmware/target/arm/s3c2440/gigabeat-fx/pcm-meg-fx.c [diff]
firmware/target/arm/s3c2440/mini2440/pcm-mini2440.c [diff]
firmware/target/arm/s5l8700/pcm-s5l8700.c [diff]
firmware/target/arm/s5l8702/pcm-s5l8702.c [diff]
firmware/target/arm/tms320dm320/creative-zvm/pcm-creativezvm.c [diff]
firmware/target/arm/tms320dm320/mrobe-500/pcm-mr500.c [diff]
firmware/target/arm/tms320dm320/sansa-connect/pcm-sansaconnect.c [diff]
firmware/target/coldfire/pcm-coldfire.c [diff]
firmware/target/hosted/android/pcm-android.c [diff]
firmware/target/hosted/ibasso/pcm-ibasso.c [diff]
firmware/target/hosted/maemo/pcm-gstreamer.c [diff]
firmware/target/hosted/pcm-alsa.c [diff]
firmware/target/hosted/sdl/pcm-sdl.c [diff]
firmware/target/mips/ingenic_jz47xx/pcm-jz4740.c [diff]
firmware/target/mips/ingenic_jz47xx/pcm-jz4760.c [diff]
Aidan MacDonald
2021-07-25 77ec752248: shortcuts: fix file handle leak on OOM condition
apps/shortcuts.c [diff]
Aidan MacDonald
2021-07-24 d0536b8b6b: Fix typo in f8bbe3352c4d9f21fde892ee8b60563decfc6a14
tools/builds.pm [diff]
Solomon Peachy
2021-07-24 f8bbe3352c: rocker: First crack at manual for the AGPTek Rocker

It needs screenshots and slightly better installation instructions

Includes bits shared with other HibyOS platforms
manual/advanced_topics/main.tex [diff]
manual/getting_started/hibyos_install.tex [new]
manual/getting_started/installation.tex [diff]
manual/platform/agptekrocker.tex [new]
manual/platform/keymap-agptekrocker.tex [new]
manual/rockbox_interface/main.tex [diff]
tools/builds.pm [diff]
Solomon Peachy
2021-07-24 a0948ddfa1: Enable building the manual for the FiiO M3K and Shanling Q1

The nightly manual builds previously only included targets that were marked as "stable" -- The M3K and Q1 are not because they lack rbutil integration, but we would like to provide the manual builds regardless.
tools/builds.pm [diff]
Solomon Peachy
2021-07-24 fde6eaa8e1: Add Fiio M3K and Shanling Q1 manuals

Includes installation instructions and a description of Rockbox's limitations versus the original firmware. Some things are still missing, notably screenshots for the Q1. The M3K image also needs to be updated to include the 'select' button.
manual/advanced_topics/main.tex [diff]
manual/getting_started/installation.tex [diff]
manual/getting_started/jztool_install.tex [new]
manual/platform/fiiom3k.tex [new]
manual/platform/keymap-fiiom3k.tex [new]
manual/platform/keymap-shanlingq1.tex [new]
manual/platform/shanlingq1.tex [new]
manual/rockbox_interface/main.tex [diff]
Aidan MacDonald
2021-07-24 42ba117952: tree.c use strlcpy to avoid buffer ovfl
apps/tree.c [diff]
William Wilgus
2021-07-23 26fd90bb49: talk.c check for proper file load

few sanity checks on voice clip loads
apps/talk.c [diff]
William Wilgus
2021-07-23 cb92280eca: usb_storage: Fix a memset in SCSI_INQUIRY that overflowed its buffer

The funny thing is that the memset() for the field in question was redundant, as the overall inquiry structure was memset(0) already.
firmware/usbstack/usb_storage.c [diff]
Solomon Peachy
2021-07-22 68294da574: Document an intentional fallthrough in the volume limit menu code
apps/menus/sound_menu.c [diff]
Solomon Peachy
2021-07-22 1fea6f4670: plugins pong, properties remove dead code
apps/plugins/pong.c [diff]
apps/plugins/properties.c [diff]
William Wilgus
2021-07-22 363f6595b4: tlsf make ~0 explicitly unsigned ~0u
lib/tlsf/src/tlsf.c [diff]
William Wilgus
2021-07-22 00129ac872: Fix battery_bench bug by using a static buffer for stack

Since battery_bench is a TSR (terminate & stay resident) plugin it cannot allocate the plugin buffer -- various parts of the Rockbox core make use of it as temporary storage space. The buffer was used for stack space so this generated false 'Stkov' panics when one of those in-core users overwrote the buffer.

The default stack size of 1kb is a bit small, so use 4x the default size to be on the safe side.

This also fixes a minor issue where trying to view OS stack usage while battery_bench was running would cause audio dropouts, due to scanning the possibly huge stack with IRQs disabled.
apps/plugins/battery_bench.c [diff]
Aidan MacDonald
2021-07-21 f0e3a36fe4: autoresume: Properly check the path string, not the pointer.

(the pointer is _always_ valid as it's to a fixed buffer)
apps/playback.c [diff]
Solomon Peachy
2021-07-21 8cd4b8da84: talk.c check for 0 talk clips file descriptor leaks & announce_status fix typo

talk.c potential division by zero warrants a check

desowin pointed out multiple fd leaks

announce_status.c dumb typo
apps/talk.c [diff]
William Wilgus
2021-07-21 48c29e3b3b: Fix announce_status usage of plugin buffer

Since this is a TSR plugin, it is not safe to use the plugin buffer. Convert to using static buffers instead.
apps/plugins/announce_status.c [diff]
Aidan MacDonald
2021-07-20 b91ad60d63: timefuncs.c valid_time() should return false if tm == NULL and not try to deref

luckily no one has yet..
firmware/common/timefuncs.c [diff]
William Wilgus
2021-07-20 966e210e6d: Small fixes to kbd_create_layout

- Make the argument const since it's not actually mutated
- Actually return the size of the buffer used since this is what it was supposed to do (although no existing callers cared anyway)
apps/plugins/lib/kbd_helper.c [diff]
apps/plugins/lib/kbd_helper.h [diff]
Aidan MacDonald
2021-07-20 740a50687f: jztool: add support for Shanling Q1 and Eros Q
rbutil/jztool/Makefile [diff]
rbutil/jztool/README.md [diff]
rbutil/jztool/include/jztool.h [diff]
rbutil/jztool/jztool.c [diff]
rbutil/jztool/src/device_info.c [diff]
rbutil/jztool/src/identify_file.c [diff]
rbutil/jztool/src/ucl_unpack.c [new]
rbutil/jztool/src/usb.c [diff]
rbutil/jztool/src/fiiom3k.c rbutil/jztool/src/x1000.c [rename]
Aidan MacDonald
2021-07-20 6f042e91dd: FS #13302 - Updated Polish translation (Adam Rak)
apps/lang/polski.lang [diff]
Aidan MacDonald
2021-07-20 df37450f91: talk: Explicitly cast -1 as unsigned before a left shift.

The code is explcitly relying on twos complement numerical represntation so this just shuts up the compiler and static analysis warnings.
apps/talk.h [diff]
Solomon Peachy
2021-07-18 09fc9ee9a3: sim: change Eros Q native bitmap to a symlink
uisimulator/bitmaps/UI-erosqnative.bmp []
Aidan MacDonald
2021-07-18 07a3f6bcdb: add Eros Q native simulator build
firmware/target/hosted/sdl/sim-ui-defines.h [diff]
uisimulator/bitmaps/UI-erosqnative.bmp [new]
Aidan MacDonald
2021-07-18 3e7a09cb0d: New Port: Eros Q Native

What works:
- LCD: 16-bit RGB565
- all buttons, including scrollwheel
- SD Card
- Battery level and charging/not charging status
- USB
- audio
- sample rate switching
- HP / LO detect, with "safe" fixed LO volume - LO volume will only be put to user-defined max volume if headphones are not present.
- rtc
- Plugins build, tried a couple and they seem OK
- Bootloader, installable to nand via usbboot

What doesn't work:
- Dual Boot
- power on/off has intermittent, low volume audio click
(sometimes it's completely silent, sometimes there's a click)
- Audio uses 16-bit volume scaling, so clicking/popping is pretty bad at lower volumes - need 32 bit volume scaling, 24 bit I2S data
- USB HID keys not yet defined
- no jztool support

Unknowns:
- Stereo Switch pins: Direction select, AC_DC
(probably not even hooked up)
- What is the actual purpose of the Stereo Swtich?
- How does the bluetooth module connect?

"Someday" stuff:
- get LCD working at higher bit depth
- Bluetooth
apps/plugins/rockpaint.c [diff]
bootloader/SOURCES [diff]
bootloader/x1000.c [diff]
firmware/SOURCES [diff]
firmware/drivers/audio/eros_qn_codec.c [new]
firmware/export/audiohw.h [diff]
firmware/export/config.h [diff]
firmware/export/config/erosqnative.h [new]
firmware/export/eros_qn_codec.h [new]
firmware/target/mips/ingenic_x1000/clk-x1000.c [diff]
firmware/target/mips/ingenic_x1000/erosqnative/adc-target.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/audiohw-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/erosqnative/backlight-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/erosqnative/backlight-target.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/boot.make [new]
firmware/target/mips/ingenic_x1000/erosqnative/button-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/erosqnative/button-target.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/gpio-target.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/i2c-target.h [new]
firmware/target/mips/ingenic_x1000/erosqnative/lcd-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/erosqnative/power-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/erosqnative/spl-erosqnative.c [new]
firmware/target/mips/ingenic_x1000/lcd-x1000.c [diff]
firmware/target/mips/ingenic_x1000/msc-x1000.c [diff]
firmware/target/mips/ingenic_x1000/nand-x1000.c [diff]
firmware/target/mips/ingenic_x1000/spl-x1000.c [diff]
tools/configure [diff]
tools/scramble.c [diff]
Dana Conrad
2021-07-18 64a24591ae: crc32: add fast variant of regular crc_32r function

This relies on a macro, CRC32R_FAST, to select which version to compile with. In tests the fast version is 2x faster at the expense of requiring 960 more bytes for the lookup table. For now the default is the space optimized version but in the future I would like to enable this for ports where we can afford the extra storage and/or memory requirements.
firmware/common/crc32.c [diff]
James Buren
2021-07-17 cd17decd5a: xduoox3ii: Add "Super Slow" filter roll-off

I'm not happy with the proliferation of filter-roll-off options but I don't have a less ugly solution.
apps/lang/english.lang [diff]
apps/settings_list.c [diff]
firmware/drivers/audio/xduoolinux_codec.c [diff]
firmware/export/xduoolinux_codec.h [diff]
Solomon Peachy
2021-07-15 ec31a2b4ad: Fix builds.pm syntax error (1d72d9cf)
tools/builds.pm [diff]
Solomon Peachy
2021-07-15 1d72d9cf28: builds: add Shanling Q1 to unstable
tools/builds.pm [diff]
Aidan MacDonald
2021-07-15 144d1b1e81: misc: Fix up a few warnings uncovered by LTO

* direct use of memcpy() instead of ci->memcpy() in flac and mod
* uninitialized variable in mpegplayer
apps/plugins/mpegplayer/video_out_rockbox.c [diff]
lib/rbcodec/codecs/flac.c [diff]
lib/rbcodec/codecs/libspeex/modes_wb.c [diff]
lib/rbcodec/codecs/mod.c [diff]
Solomon Peachy
2021-07-13 4c60bc9e68: New port: Shanling Q1 native

- Audio playback works
- Touchscreen and buttons work
- Bootloader works and is capable of dual boot
- Plugins are working
- Cabbiev2 theme has been ported
- Stable for general usage

Thanks to Marc Aarts for porting Cabbiev2 and plugin bitmaps.

There's a few minor known issues:

- Bootloader must be installed manually using 'usbboot' as there is no support in jztool yet.

- Keymaps may be lacking, need further testing and feedback.

- Some plugins may not be fully adapted to the screen size and could benefit from further tweaking.

- LCD shows abnormal effects under some circumstances: for example, after viewing a mostly black screen an afterimage appears briefly when going back to a brightly-lit screen. Sudden power-off without proper shutdown of the backlight causes a "dissolving" effect.

- CW2015 battery reporting driver is buggy, and disabled for now. Battery reporting is currently voltage-based using the AXP192.
apps/SOURCES [diff]
apps/features.txt [diff]
apps/keymaps/keymap-shanlingq1.c [new]
apps/lang/english.lang [diff]
apps/plugins/battery_bench.c [diff]
apps/plugins/bitmaps/mono/SOURCES [diff]
apps/plugins/bitmaps/native/SOURCES [diff]
apps/plugins/bitmaps/native/bubbles_background.360x400x16.bmp [new]
apps/plugins/bitmaps/native/bubbles_emblem.360x400x16.bmp [new]
apps/plugins/bitmaps/native/invadrox_background.360x400x16.bmp [new]
apps/plugins/bitmaps/native/jewels.360x400x16.bmp [new]
apps/plugins/bitmaps/native/rockblox_background.360x400x16.bmp [new]
apps/plugins/bitmaps/native/sliding_puzzle.360x360x16.bmp [new]
apps/plugins/bitmaps/native/snake2_bottom.360x400x16.bmp [new]
apps/plugins/bitmaps/native/snake2_header1.360x400x16.bmp [new]
apps/plugins/bitmaps/native/snake2_header2.360x400x16.bmp [new]
apps/plugins/bitmaps/native/snake2_left.360x400x16.bmp [new]
apps/plugins/bitmaps/native/snake2_right.360x400x16.bmp [new]
apps/plugins/blackjack.c [diff]
apps/plugins/brickmania.c [diff]
apps/plugins/bubbles.c [diff]
apps/plugins/calculator.c [diff]
apps/plugins/calendar.c [diff]
apps/plugins/chessbox/chessbox_pgn.h [diff]
apps/plugins/chessclock.c [diff]
apps/plugins/chip8.c [diff]
apps/plugins/clix.c [diff]
apps/plugins/cube.c [diff]
apps/plugins/doom/i_video.c [diff]
apps/plugins/flipit.c [diff]
...and 80 more files.
Aidan MacDonald
2021-07-13 3abb7c5dd5: x1000: revamp MSC driver card detection logic

Debounce logic now handles both removal and insertion and verifies the detection is stable for 100ms before taking any action.

This solves the bootloader "file not found" issue on the Shanling Q1. It seems a false removal event was generated, causing the filesystem to be automatically unmounted. Probably this is due to some transient noise at boot. Delays didn't solve the problem, probably because the bogus hotplug event was queued, and normal mdelay() would simply delay event delivery.
firmware/target/mips/ingenic_x1000/msc-x1000.c [diff]
firmware/target/mips/ingenic_x1000/msc-x1000.h [diff]
Aidan MacDonald
2021-07-13 3c4fdf10e2: crc32: add fast variant of regular crc_32 function

This relies on a macro, CRC32_FAST, to select which version to compile with. In tests the fast version is 2x faster at the expense of requiring 960 more bytes for the lookup table. For now the default is the speed optimized version but in the future I would like to enable this for ports where we can afford the extra storage and/or memory requirements.
firmware/common/crc32.c [diff]
James Buren
2021-07-12 321680973b: Sansa Connect: Display battery info in debug menu

Show battery temperature, current, discharge power and available energy in battery debug menu.
apps/debug_menu.c [diff]
Tomasz Moń
2021-07-11 84362141a0: x1000: Unified flash bootloader installer
bootloader/x1000.c [diff]
firmware/SOURCES [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/installer-fiiom3k.c [deleted]
firmware/target/mips/ingenic_x1000/fiiom3k/installer-fiiom3k.h [deleted]
firmware/target/mips/ingenic_x1000/installer-x1000.c [new]
firmware/target/mips/ingenic_x1000/installer-x1000.h [new]
Aidan MacDonald
2021-07-11 e9d228832c: x1000: Unified bootloader
bootloader/SOURCES [diff]
bootloader/fiiom3k.c [deleted]
bootloader/x1000.c [new]
Aidan MacDonald
2021-07-11 d6dcb99684: uisimulator: implement sim_modtime
uisimulator/common/filesystem-sim.c [diff]
uisimulator/common/filesystem-sim.h [diff]
James Buren
2021-07-11 1298e47134: zip: include strlcpy.h
firmware/common/zip.c [diff]
James Buren
2021-07-11 fa743258ea: filesystem: implement os_modtime for unix
firmware/target/hosted/filesystem-app.h [diff]
firmware/target/hosted/filesystem-hosted.h [diff]
firmware/target/hosted/filesystem-unix.c [diff]
James Buren
2021-07-11 8846e087c0: zip: implement zip extraction support

This adds code sufficient to extract files to available storage given a suitable root directory to extract to. It works on an already open zip handle and also supports chain-loading a secondary callback in the event that integration into the process is desired.
firmware/common/zip.c [diff]
firmware/include/zip.h [diff]
James Buren
2021-07-10 a1bcca645b: zip: rename modts field to mtime

This brings it more in line with other structs with this exact same data type and usage.
firmware/common/zip.c [diff]
firmware/include/zip.h [diff]
James Buren
2021-07-10 6c084ac3ea: Sansa Connect: Ensure LCD starts before backlight

Extra delay prevents white flash after hold switch release.
firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c [diff]
Tomasz Moń
2021-07-10 b4ecd612f7: Sansa Connect: Use deviceid in USB Serial Number

Atmel AT88SC6416C CryptoMemory is almost I2C compatible. The device is connected to bitbanged I2C bus shared with compliant I2C devices.
firmware/SOURCES [diff]
firmware/drivers/generic_i2c.c [diff]
firmware/export/generic_i2c.h [diff]
firmware/target/arm/tms320dm320/i2c-dm320.c [diff]
firmware/target/arm/tms320dm320/i2c-dm320.h [diff]
firmware/target/arm/tms320dm320/sansa-connect/cryptomem-sansaconnect.c [new]
firmware/target/arm/tms320dm320/sansa-connect/cryptomem-sansaconnect.h [new]
firmware/usbstack/usb_core.c [diff]
Tomasz Moń
2021-07-09 663539619c: configure: fix a typo that could break voice builds

(If you don't have espeak, festival, or flite installed)
tools/configure [diff]
Solomon Peachy
2021-07-09 8de163b8ae: Sansa Connect: Fix reported CPU frequency

Make frequency related comments accurate. Disable UART0 clock.
firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c [diff]
firmware/target/arm/tms320dm320/sansa-connect/crt0-board.S [diff]
firmware/target/arm/tms320dm320/sansa-connect/lcd-sansaconnect.c [diff]
firmware/target/arm/tms320dm320/sansa-connect/wifi-sansaconnect.c [diff]
firmware/target/arm/tms320dm320/sdmmc-dm320.c [diff]
firmware/target/arm/tms320dm320/system-dm320.c [diff]
firmware/target/arm/tms320dm320/system-target.h [diff]
Tomasz Moń
2021-07-09 60e2cd6de9: DM320: Regorganize LCD and TTB memory layout

Do not introduce any change for M:Robe 500 as it uses the two LCD frames in non-obvious way.

Sansa Connect and Creative ZVM use only single front framebuffer. Place TTB at DRAM end to minimize memory loss due to alignment. Reserve as little as possible memory for the LCD frames. On Sansa Connect this change extends audio buffer by 858 KiB.
apps/plugins/plugin.lds [diff]
firmware/export/dm320.h [diff]
firmware/target/arm/tms320dm320/app.lds [diff]
firmware/target/arm/tms320dm320/boot.lds [diff]
Tomasz Moń
2021-07-09 2e9b93dc5d: build: Nuke the ASMFLAGS workaround for gcc 3.4.x
lib/rbcodec/codecs/codecs.make [diff]
lib/rbcodec/codecs/libmad/libmad.make [diff]
lib/rbcodec/codecs/libspeex/libspeex.make [diff]
tools/make.inc [diff]
tools/root.make [diff]
Solomon Peachy
2021-07-08 2c984f3714: build: use gcc-ar / gcc-ranlib in preparation for link-time-optimization
tools/configure [diff]
Solomon Peachy
2021-07-08 2ff3425ab1: build: Rename SHARED_LDFLAG to SHARED_LDFLAGS
apps/plugins/lua/Makefile [diff]
apps/plugins/plugins.make [diff]
lib/rbcodec/codecs/codecs.make [diff]
tools/configure [diff]
Solomon Peachy
2021-07-08 a9f36efa62: file/fat: rework utime function as modtime extension

This eliminates the dependence on a special struct since we were only using the modtime anyway. But it no longer fits any known standard APIs so I have converted it to our own extension instead. This can still be adapted to existing hosted APIs if the need arises.
firmware/common/file.c [diff]
firmware/drivers/fat.c [diff]
firmware/export/fat.h [diff]
firmware/include/file.h [diff]
firmware/include/filesystem-native.h [diff]
firmware/libc/include/time.h [diff]
James Buren
2021-07-08 a0f1236e88: Fix yellow in android builds.
firmware/export/fat.h [diff]
Solomon Peachy
2021-07-08 17f7dfb9d2: build: Make checkwps use global GCCOPTS
tools/checkwps/checkwps.make [diff]
Solomon Peachy
2021-07-08 0e1a90ea1d: x1000: SPL refactoring

This streamlines the boot code a bit and reduces target specific boilerplate. The clock init hack used by the bootloader has been
"standardized" and works for the main Rockbox binary now, so you can boot rockbox.bin over USB without special hacks.
bootloader/fiiom3k.c [diff]
firmware/target/mips/ingenic_x1000/boot-x1000.h [new]
firmware/target/mips/ingenic_x1000/clk-x1000.c [diff]
firmware/target/mips/ingenic_x1000/clk-x1000.h [diff]
firmware/target/mips/ingenic_x1000/crt0.S [diff]
firmware/target/mips/ingenic_x1000/fiiom3k/spl-fiio