1
0
Fork 0
forked from len0rd/rockbox
Commit graph

126 commits

Author SHA1 Message Date
Solomon Peachy
eb03c7b4d0 build: Newer toolchains need a few tweaks to linker options.
Pull those fixes in now

Change-Id: I71c373ecc9d062ca997eb940c7d84a94e2d678aa
2025-09-07 15:40:44 -04:00
Solomon Peachy
e9b8413f49 Revert "Toolchains: Update to GCC 10.5.0"
I pushed the wrong working tree AGAIN

This reverts commit b92033f716.
2025-09-07 15:22:31 -04:00
Solomon Peachy
b92033f716 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic157255d76030e66325719e64331f553cb7c4363
2025-09-07 15:11:52 -04:00
Solomon Peachy
34f34bb7f1 misc: Fix a small pile of warnings found with diagnostics turned way up
* possible null pointer dereferences
 * non-annotated fallthroughs in case statements

Change-Id: I2332e0e0a4203ceca0999291ead112b8ab94c613
2025-09-06 21:31:58 -04:00
Solomon Peachy
a60c09c24c Revert "Toolchains: Update to GCC 10.5.0"
This reverts commit 94712b34d4.
2025-08-20 16:09:54 -04:00
Solomon Peachy
94712b34d4 Toolchains: Update to GCC 10.5.0
All toolchain dependencies are circa the GCC 10.5.0 release:

  GCC 10.5.0, binutils 2.40, gmp 6.2.1, mpfr 4.1.1, mpc 1.3.1, isl 0.24

Native:

 * arm - mini2g, nano2g works
       - ipod6g hangs at logo display
 * mips - xduoox3 works
 * m68k - binaries untested

Hosted:

 * arm - samsungypr0 works
 * mips - xduoox3ii works
 * Android NDK - unchanged at GCC 4.9.4

Change-Id: Ic9c4ad487927d2ad4247c140f1a7db2740e5f316
2025-08-20 09:16:57 -04:00
Hairo R. Carela
48392bab94 New port: Anbernic RG Nano
A bit of context, this device is a clone of the FunKey-S with a different form factor, hardware is mostly identical, the relevant difference is it has audio out (via usb-c, adapter to 3.5mm is included), this is the reason why the FunKey-SDK is needed for bulding.

This port is based on the old SDL 1.2 code because the device doesn't have SDL2 support. Alongside what was supported in the SDL 1.2 builds this port supports battery level, charging status and backlight control.

Change-Id: I7fcb85be62748644b667c0efebabf59d6e9c5ade
2025-07-29 21:01:53 -04:00
Solomon Peachy
6f5760b41a jpeg: Silence -Wshift-negative-value warnings
These are all from upstream code, so just force-ignore the warnings

Change-Id: I9936e1cb79636b0bfee5dd4db0c98a06792d2f69
2025-04-22 09:43:40 -04:00
Roman Artiukhin
44e97b9ef6 plugins: imageviewer: Don't reload the image on the prev/next action if it's a single image.
Fixes image reloading when only a single image file is present among other files.

Change-Id: I6400af556d866ac96a3532712563bf01cbd29f68
2025-03-28 10:47:00 -05:00
Christian Soffke
ad4113a7e9 plugins: image viewer: respect album art setting
Displaying large embedded album art in the
image viewer requires playback to be stopped,
which is pretty disruptive, so respecting the
system setting here may make sense

Change-Id: I479466bf26d85c3305d6c81e2c1818b2c2b2cbdb
2025-01-15 14:09:26 -05:00
Solomon Peachy
8b01f939d8 hitiet ma8/ma9: add in keymaps for all plugins
Largely guesswork.

Change-Id: I8ab8d36de4bbdcf25dcf7d3442266bfb0a370b6f
2025-01-07 14:22:53 -05:00
Christian Soffke
1745b74576 Make simulator compile on MacOS
Tested on MacOS Sequoia (Apple Silicon) with the
latest Xcode command line tools, gcc 14
(Homebrew GCC 14.2.0_1) and sdl2 (Homebrew 2.30.9)

Make sure 'gcc' (and 'gcc-ar') is in your PATH
ahead of the Xcode-provided "gcc"(clang). E.g.
by setting up symlinks in /usr/local/bin that
point to gcc-14 and gcc-ar-14.

Notes:
- The appropriate bmp from uisimulator/bitmaps
  has to be manually copied to your build folder
  and renamed to UI256.bmp, if you want the sim
  background to be displayed

Change-Id: I559f33d2165065f913f30c016b85906af380fb81
2024-11-30 22:19:02 -05:00
Roman Artiukhin
914a56f34c imageviewer: fix segfault when album art fails to load
Attempt to change file fails due to access to uninitialized memory with negative index

Fixup for 55a5bfe7

Change-Id: I9c42f66c856c1d4b7261da5e4996efbe9597bcd4
2024-10-29 09:44:06 +02:00
Roman Artiukhin
55a5bfe740 View Album Art from WPS context menu
Add ability to imageviewer to view current track embedded/folder album art
Add "View Album Art" WPS context menu item

Change-Id: I49caebd38e5e3e2910d418bbeaa5e51da0e6bd93
2024-10-28 12:46:51 -04:00
Roman Artiukhin
37652c5e2b imageviewer: jpeg: Fix grayscsale mode with no dithering show black screen
Change-Id: Ib29e3577c59db8e98db1dd5b8e28874a4fbef20f
2024-10-15 17:46:47 +03:00
Roman Artiukhin
b8238f7b20 imageviewer: Initial support for JPEG progressive images. Add decoder
Added jpeg decoder jpegp.c using RAINBOW lib. Currently enabled only for pictures not supported by old decoder (as old decoder more optimized for low mem targets)

Someone TODO:
 * Old decoder has optimized downscale logic which new decoder doesn't have (it gives big difference in required memory and time for decoding). This logic should be ported/adapted if possible.

 * Add smooth downscaling.

 * Grayscale support

Change-Id: Ie96bc62848b51cc6a3942f8e069ec6ab02dc1c56
2024-10-14 09:19:34 -04:00
Roman Artiukhin
64ad7354b6 imageviewer: Initial support for JPEG progressive images. Add lib sources
Added unmodified files from RAINBOW library by Attila Tarpai
Full sources:
https://github.com/Halicery/vc_rainbow

Change-Id: I356486b6a332aa3f610ddcae57f8a2044653b051
2024-10-14 09:19:34 -04:00
Christian Soffke
8808c42d6d Fix FS#13494
Change-Id: Ie306418431eb412dac00907eb2f59999d8b4dfb0
2024-10-03 14:03:29 +02:00
William Wilgus
ee840709d3 [Feature] Open plugins now recognizes known filetypes and can run them
now you can run your lua files without having to add the viewer to
the shortcut or if you want a bmp file to be displayed when you start
the device that can be done as well

Change-Id: Ia56b566789623a2ca78d9e4583086db6e2cd689b
2024-05-06 17:27:25 -04:00
Solomon Peachy
8cc3266b2a Settings: Rename INT/BOOL setting type enum to RB_INT/RB_BOOL
....Because INT and BOOL are already defined in mingw32.

Change-Id: I28ab8189c00002c8f68bc9d0c23d2ae78d9e33d0
2023-09-22 10:00:46 -04:00
Aidan MacDonald
d40a598970 plugins: Simplify plugin/codec API versioning
Replace the minimum version bound with a check on the size of
the API struct. The version only needs to be incremented for
ABI breaking changes. Additions to the API won't need to touch
the version number, resulting in fewer merge conflicts.

Change-Id: I916a04a7bf5890dcf5d615ce30087643165f8e1f
2023-03-21 16:23:54 -04:00
Christian Soffke
faa2cb9942 plugins: Improve usability of iPod keymaps
- Reduce need to press multiple buttons at
the same time to quit a plugin

- Have "Menu" be default way to quit plugins or
to access plugin menu

- Fall back to (Long) "Select" or Long "Menu"
in cases where Menu button isn't available
(e.g. in ImageViewer and many games)

out of scope:
boomshine, lua_scripts, Rockpaint,
Doom, Duke3D, Pacbox, Quake,
Sgt-Puzzles, Wolf3D, XWorld,
Minesweeper, Pixel Painter, Spacerocks

Change-Id: I6d4dc7174695fe4b8ee9cbaccb21bdbfe6af5c48
2022-12-29 04:39:22 +01:00
William Wilgus
c85a4f1fa4 menus remove reserved 'param' parameter
-- missed the plugin menu --

Change-Id: Iac2c9b0b8212ab5f3ac2ef90e1ac2723d212f86c
2022-12-17 04:24:37 -05:00
William Wilgus
97a82ee3ec plugins HAVE_BACKLIGHT helper remove ifdefs in favor of dummy functions
lessen the ifdef hell

Change-Id: I52f830284e4599f3fc3a75c27dda27058b8de1a3
2022-11-23 23:00:29 -05:00
Aidan MacDonald
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.

Change-Id: Ib187012aad65ac678dbd837b1464a83bad722411
2022-09-30 10:42:49 +01:00
Christian Soffke
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.

Change-Id: Ideadd9451359bd5735bce92fca5d983e61f300e9
2022-04-18 10:58:40 -04:00
Aidan MacDonald
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.

Change-Id: Ia48924d4dcb24c1111509329581809be494d0165
2022-04-09 23:15:48 +01:00
Christian Soffke
ca0c3dee0a ImageViewer: M3K keymap allow scrolling up/down
Change-Id: I385354688b1d8f8df4d44e7e177e23bdb6ed3df4
2022-04-01 11:01:52 -04:00
Christian Soffke
8f063d49c2 ImageViewer: Fix FS#13329 (GIF File handle/memory leaks)
Change-Id: Ib3ef22716c8ba35c7bb78231ca4f5c7155f16018
2022-01-09 14:36:14 +00:00
Christian Soffke
f379e1dbb3 ImageViewer: Fix GIF Decoder progress bar
Change-Id: I9db9b27f9e12f08323534038bc6f0882329a2c00
2022-01-09 14:36:14 +00:00
Christian Soffke
18358ed541 ImageViewer: Fix gifs sporadically crashing on targets
ensure 32bit alignment

Change-Id: I11e0df599403a888fa63dab8f1c5a94a5f35d9ad
2022-01-09 14:36:14 +00:00
Christian Soffke
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

Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
2022-01-09 14:36:14 +00:00
Christian Soffke
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)

Change-Id: Ife0ef359e19a03a6dc033070a11ae5843ee555e6
2022-01-09 09:11:29 -05:00
Aidan MacDonald
cf3fa437fc Remove unhelpful unsigned casting trick
Change-Id: Ice86f060974c51bbaf051ed8c5a369ce80ecfe15
2021-08-07 15:52:18 +00:00
Aidan MacDonald
005c414e5f Document intentional fallthroughs + fix harmless unintended ones
Change-Id: I1ca5b1027ec30cbf61093bab35b980196ed14e6b
2021-08-04 18:59:46 +00:00
Aidan MacDonald
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.

Change-Id: I635e83f02a880192c5a82cb0861ad3a61c137c3a
2021-07-13 22:01:33 +01:00
Solomon Peachy
3ba2f6e5c7 Nuke all TCC77x targets: iAudio 7, Sansa C100, M200(v1-3), Logik DAX
They were never finished, never saw any release ever, and haven't
compiled for the better part of a decade.  Given their HW capabilities [1],
they are not worth trying to fix.

[1] 1-2MB RAM, ~256MB onboard flash, no expandability

Change-Id: I7b2a5806d687114c22156bb0458d4a10a9734190
2021-04-26 07:41:51 -04:00
Aidan MacDonald
3ec66893e3 New port: FiiO M3K on bare metal
Change-Id: I7517e7d5459e129dcfc9465c6fbd708619888fbe
2021-03-28 00:01:37 +00:00
William Wilgus
eb9f05f835 ImageViewer Fix jpeg decoder
Image viewer compiles decoders as a plugin and removes CRT0
A  resuklt static vars do not get initialized in decoders

Change-Id: I72da326967c7b404b297897000f82852661a7ebb
2021-03-11 03:43:56 +00:00
Aidan MacDonald
aacb0811d9 Rename symbols of FiiO M3K Linux-based port
Mainly a straight replacement of FIIO_M3K -> FIIO_M3K_LINUX.

Change-Id: Id07c84f8150991d1b6851540c2c3f8f67e3f12c2
2021-02-27 23:53:28 +00:00
William Wilgus
3237ae4a4f LCD core move buf ptr and address look up function viewport struct
I'm currently running up against the limitations of the lcd_draw functions
I want these functions to be able to be used on any size buffer not
just buffers with a stride matching the underlying device

[DONE] allow the framebuffer to be decoupled from the device framebuffer
[DONE need examples] allow for some simple blit like transformations
[DONE] remove the device framebuffer from the plugin api
[DONE}ditto remote framebuffer
[DONE] remove _viewport_get_framebuffer you can call struct *vp = lcd_set_viewport(NULL) and vp->buffer->fb_ptr

while remote lcds may compile (and work in the sim) its not been tested on targets

[FIXED] backdrops need work to be screen agnostic

[FIXED] screen statusbar is not being combined into the main viewport correctly yet

[FIXED] screen elements are displayed incorrectly  after switch to void*

[FIXED] core didn't restore proper viewport on splash etc.

[NEEDS TESTING] remote lcd garbled data

[FIXED] osd lib garbled screen on bmp_part

[FIXED] grey_set_vp needs to return old viewport like lcd_set_viewport

[FIXED] Viewport update now handles viewports with differing buffers/strides by copying to the main buffer

[FIXED] splash on top of WPS leaves old framebuffer data (doesn't redraw)
[UPDATE] refined this a bit more to have clear_viewport set the clean bit and have skin_render do its own screen clear
scrolling viewports no longer trigger wps refresh
also fixed a bug where guisyncyesno was displaying and then disappearing

[ADDED!] New LCD macros that allow you to create properly size frame buffers in you desired size without wasting bytes
(LCD_ and LCD_REMOTE_)
LCD_STRIDE(w, h) same as STRIDE_MAIN
LCD_FBSTRIDE(w, h) returns target specific stride for a buffer W x H
LCD_NBELEMS(w, h) returns the number of fb_data sized elemenst needed for a buffer W x H
LCD_NATIVE_STRIDE(s) conversion between rockbox native vertical and lcd native stride (2bitH)
test_viewports.c has an example of usage

[FIXED!!] 2bit targets don't respect non-native strides
[FIXED] Few define snags

Change-Id: I0d04c3834e464eca84a5a715743a297a0cefd0af
2020-10-26 12:28:48 -04:00
Moshe Piekarski
12f3ed1699 make the plugin API frambuffer agnostic
Change-Id: I5abdc231093054c517ff53b9a456997e440e3f6e
2020-10-26 12:28:48 -04:00
Solomon Peachy
2a471e288c New port: AIGO EROS Q / EROS K
The Q and K have a slightly different case, but the hardware under the
shell is completely identical.

These models are rebadged versions:

 * Hifiwalker H2   (== Q)
 * AGPTek H3       (== K)
 * Surfans F20     (== K)

Other notes:

  * Significant improvements in the shared Hiby-platform launcher/loader
    * SD card can theoretically be hot-swapped now
    * Support external USB mass storage!
  * Some consolidation of Hiby-platform targets
  * Some consolidation of plugin keymaps

Todo/known issues:

 * Keymaps need to be gone over properly
 * Convert to HAVE_SCROLLWHEEL?

Change-Id: I5a8a4f22c38a5b69392ca7c0a8ad8c4e07d9523c
2020-10-11 16:37:17 -04:00
Solomon Peachy
aabc8aca47 New port: FiiO M3K
Most credit goes to:  Roman Skylarov
Additional integration and refactoring by myself.

 *** COMPLETELY UNTESTED ***

Change-Id: Ia64c36d92e0214c6b15f7a868df286f8113ea27b
2020-10-09 12:41:18 -04:00
Solomon Peachy
5d40d97585 voice: rename mp3_play_* functions to voice_play_*
Remove mp3_is_playing() entirely, in favor of pcm_is_playing()
Remove mp3_play_pause() entirely, as it's a dummy/no-op call
Remoce some archos-specific comments

Change-Id: I4e9ff323490a93add00809efd19e0d4e3f198b2d
2020-09-20 14:52:30 +00:00
William Wilgus
c62493e98a Xduoo X3 Add tree scrolling FS#13240, Emulate Multibutton presses
Fixes deficiencies with the button system on the X3

  The x3 has an interesting button layout.
  Multiple key presses are NOT supported unless
  [BUTTON_POWER] is one of the combined keys

  As you can imagine this causes problems as the power button takes
  precedence in the button system and initiates a shutdown if the
  key is held too long
  instead of BUTTON_POWER use BUTTON_PWRALT in combination with other keys
  IF using as a prerequsite button then BUTTON_POWER should be used

  Multiple buttons are emulated by button_read_device but there are a few
  caveats to be aware of:

  Button Order Matters!
   different keys have different priorities, higher priority keys 'overide'
   the lower priority keys
  VOLUP[7] VOLDN[6] PREV[5] NEXT[4] PLAY[3] OPTION[2] HOME[1]

  There will be no true release or repeat events, the user can let off the
   button pressed initially and it will still continue to appear to be
   pressed as long as the second key is held

Tree scrolling is PLAY+NEXT or PLAY+PREV

Change-Id: I88dfee1c70a6a99659e8227f5becacc50cc43910
2020-09-13 16:23:24 +00:00
Solomon Peachy
9be5bc4cf0 plugins: More HAVE_BACKLIGHT cleanup
Change-Id: I70cf700f5bc3d4375c025efa62ef40fd2bd70293
2020-07-24 19:20:15 -04:00
Solomon Peachy
092c340a20 [1/4] Remove SH support and all archos targets
This removes all code specific to SH targets

Change-Id: I7980523785d2596e65c06430f4638eec74a06061
2020-07-24 21:20:13 +00:00
Solomon Peachy
c1485455ea imageviewer: Fix potential null pointer dereference
(caught by clang-analyzer)

Change-Id: Ie24b7cd75c5e9814007674925f33b1a321f1d06d
2020-06-30 21:12:12 +00:00
Solomon Peachy
46e2528992 av300: Continue cleaning out keymaps.
(A lot of work was done on this thing, for a target that hasn't been compileable
 at least since we moved to git..)

Change-Id: Ibface9392f3251b5be4bf1e0c4d12639c4f1662d
2020-04-13 22:59:29 +02:00