with root redirect and even relative paths eventually we need the dircache
to get files from the disk
Change-Id: Ia443f473f09dd534674d5fdb71251214ce01eed7
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.
Change-Id: Id0279216e4dd019f8bf612a81d3835eff010e506
I ocassionally see Playlist Invalid messages but which part is failing?
eventually it works so its probably a race
Change-Id: Ib2b09ab13ce09a55130430a2e94bc0498443b6ec
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
Change-Id: Id6627171eb96210b2deeef8d15bab3f8d1e0ab3f
filename buffer was too small to retrieve redirect path
if redirected to sd root remove <SD1> as it is redundant
Change-Id: I1326601f1ba4a18d6bc173798759eb762b55528c
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
Change-Id: Ia97cf50ff5f5b440877f9c005da6f12c53af931e
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
Change-Id: I54e06c152c369eb6c0322186fe2c1e9a1e6d940d
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
Change-Id: I03e064e7f897033c5d47d78a1d34238217cde485
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
Change-Id: Ib98f6b200b9dee3e4350ad4d7ef80bbb95c77481
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
Change-Id: I848fb3bd759f9684ac2497324a371f92b7464f7b
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
-----------------------------------------------------------------------------------------------
Change-Id: Ib8b88c5ae91af4d540e1829de5db32669cd68203
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.
Change-Id: I00088396b9826e02e69a4a33477fe1a7816374f1
Tested with my SansaClip+. I don't think this will need extra battery
but let me know if I am wrong.
Change-Id: I287dae134113e0f8a138af68f5087b8ea45b0f4c
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
Change-Id: I8ab07a31d4b6f290e089ecd7857f43ec195a06e0
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.
Change-Id: I2aff6297d7e229a056383afe6074c41829b38e2d
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.
Change-Id: I5b0931c22b484f3ff6441d6c88079f18ec70f7f8
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.)
Change-Id: I5561dd9668c3bdd34e92f34ef50848aef8c0b7eb
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.
Change-Id: I22fb581abf56072e35e6c29d72e553747ec1a96a
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.
Change-Id: I3183aaee58c94bfbaf4e24424030b8be6e341d22
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.
Change-Id: I81c894e1b8a3440cb409092bec07fe3778a78959
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.
Change-Id: Ib07f0634ac8f663452c3e6e3c3d92fb6da1a1b4c
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.
Change-Id: If6a6918b2fabb256261c84651803bbf44deacb1a
Define proper symbolic constants for power mode. Also allow
targets to define the default power mode setting.
Change-Id: Ia07cf854dce47d0a6aa88e067471f1ff9fbc45fb
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.
Change-Id: I6b357ad1a2e19a9b631ee3055e158492570479e3
Don't disable grayscale overlay, don't show "resize" messages
between frames and and don't clear display unless actually
necessary
Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
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
Since we manually do it later, syncing after every
file is unnecessary and can make the audio
queue overflow
Change-Id: Ia7ab6ee345b25a453c56f48ed0d330b04da6da94
make every item in a selection scroll when no columns are selected
otherwise title & currently selected column will be the only scrolling lines
Change-Id: I3bab480f47997b89a01563a69dc68e6633152cf5
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.
Change-Id: Ic8ff4471e1583d1ab1f7d16911b15705a7f60aca
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.
Change-Id: I655320c4f92ff496834e252cc77ece47723a8677
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.
Change-Id: Ic0783f3cd5bf015803b7ce90537ba38ab3434bea
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.
Change-Id: I661c59057b5315ba793ee1674f7a2ea1ffd7968d