This is attempt to simplify porting programs to rockbox (as plugins).
Currently this compat layer implements:
fopen(), fclose(), fflush(), fread(), fwrite(), fseek(), fseeko(),
ftell(), ftello(), fgetc(), ungetc(), fputc(), fgets(), clearerr(),
ferror(), feof(), fprintf()
In order to use it you need to include in ported sources
"lib/stdio_compat.h"
Change-Id: I5add615dd19c5af9c767ccbfb1bd5a4e466741cb
I removed the mechanism to fall through to internally mapped contexts
after plugin contexts were exhausted
Change-Id: Id287248184fd67cb2a2242475296247ac86af807
Playback checked the files' presence before attempting to buffer
the track. Just get rid of that and save an extra open/close call.
It will find out if the path is bad when the metadata fails.
Fix some size_t/off_t conflation. No need to update plugin version
because no plugin actually uses bufopen().
Change-Id: I3db112449dc0b2eeb91c546f308880ac82494fc7
It must be set to something else valid (unless it's the only one
left) when closing it, IN ALL CASES, not just if it's first or last.
Don't know what was in my head. Hopefully takes care of a reported
issue. Even if it's not causing any issues, it was still incorrect.
Change-Id: I594af8b35d774ec222dadce80dfa8b95138f037e
Do as with fdprintf and avoid filesystem calls for every single
byte. If it overreads, just put the excess back with lseek, which
does no I/O itself.
Change-Id: Ifd5d21b5dca7183346e44d365d3f7d45e8cc6438
Paths are stored after the structure at their actual length plus
any aligment padding. In principle, any type of auxilliary data
could go there.
Change-Id: Ic5487dc4089781b5cc52414d1691ba6d9dc1893c
The location of the handle cannot be kept across calls to
shrink_handle() since it may move the structure. The error was
there in one place at the inception, corrected, then reintroduced.
Make shrink_handle() return the new location and use it, which
makes the side effects of the function clearer.
Change-Id: Icae6a0ad6f7bb0d6645b044cccfa4aef88db42ad
There's no need for it any longer since the list is now doubly-
linked. As a bonus, stack limits pose no barrier to the length of
the list.
Change-Id: I41c567f946b640ef1e3c2d93da2f5aef9a763c66
Does away the statically-allocated track list which frees quite
a fair amount of in-RAM size.
There's no compile-time hard track limit.
Recommended TODO (but not right away): Have data small enough use
the handle structure as its buffer data area. Almost the entire
handle structure is unused for simple allocations without any
associated filesystem path.
Change-Id: I74a4561e5a837e049811ac421722ec00dadc0d50
Just use long so the compiler potentially doesn't complain about
use of other values not in the enum. It's also the type used
around the system for event ids.
Increase min codec API version.
No functional changes.
Change-Id: If4419b42912f5e4ef673adcdeb69313e503f94cc
If in the middle of a manual skip, playback would try to seek, and
therefore start, the codec before the audio handle was available.
This wasn't really a problem since the codec would just bail out
and be retried later. But, it is a problem for a change I was working
on with seeking where the codec could get caught in a full-speed
loop trying to seek itself (stoppable, not lockup).
The main side effect of this change that you may notice, if using an
HDD with dircache turned on and the disk is not spinning, is that you
can keep holding down prev/next if dir skipping and the WPS will
start FF/RW mode. By the time the new track shows up, you will have
seeked into it some amount.
Well, the PBE is getting the info ASAP anyway and as far as it's
concerned, the next track is under way. On that end of things, it's
correct. Perhaps WPS should lock out its own seek mode at certain
times.
Change-Id: Ifc7409a886df399cec189d1bae2adba3872e857a
Avoids a call to write() for every output character. It doesn't
need to be very large to have a great effect on speed and realize
most of the potential.
Change-Id: I11820c1968ed7b20aa00e106a022c1b864b03d21
It isn't necessary to explicitly stop and restart playback to
force it to update something that must cause rebuffering.
Change-Id: I6ff5394fcafc7374af67ef9fbf9022bb4a79b773
This brings a various small changes to the drawing and input code,
as well as a brand new "mouse mode", where input goes to a virtual
mouse cursor. Only Loopy has this mouse mode enabled by default,
while other games have it hidden away under the debug menu. Some
changes by me to Palisade were required to make it playable; those
are included here as well. Right now, sgt-net is pushing the c200v2's
upper limit on size and may have to be dropped in a future commit.
Change-Id: I495d2a2125462c2985aec1ffbc54bbe3fe5133bd
Instead of checking ticks, set a sticky dirty flag that indicates
that the RTC needs to be read. This gives a timely update and more
accurate readout without actually reading the RTC until it changes.
The implementation should atomically read the flag and clear it.
Setting the flag would typically happen in an RTC tick ISR.
Change-Id: I6fd325f22845029a485c502c884812d3676026ea
The new vuprintf makes unnecessary workarounds due to formatting
limitations. I checked grep output for whatever appeared to fit
but it's possible I missed some instances because they weren't
so obvious.
Also, this means sound settings can dynamically work with any
number of decimals rather than the current assumption of one or
two. Add an ipow() function to help and take advantage of dynamic
field width and precision. Consolidate string formatting of sound
settings.
Change-Id: I46caf534859dfd1916cd440cd25e5206b192fcd8
New support as well as some buggy support fixed.
Still no floating point support if ever that would be desired.
Support (*):
* Flags: '-', '+', ' ', '#', '0'
* Width and precision: 'n', '.n', '*' and '.*'
* Length modifiers: 'hh', 'h', 'j', 'l', 'll', 't', 'z'
* Radix: 'c', 'd', 'i', 'n', 'o', 'p/P', 's', 'u', 'x/X'
(*) Provision exists to switch lesser-used stuff on or off or when
certain functionality isn't desired (bootloader?). The compulsory
radixes are everything but 'o', 'n', 'p/P' and 'x/X' with length
modifiers being optional. The default setup is 'l', 'z', 'c', 'd',
'p/P', 's', 'u', 'x/X'.
* Move fdprintf() to its own file. It was in a strange place.
* Make callers compatible and fix a couple snprintf() bugs while
at it.
Could smush it down in size but I'm gonna get over the binsize
neurosis and just the let optimizer do its thing.
Change-Id: Ibdc613a9b6775802c188b29b9dd46c568c94f7c3
FIX - softlock not allowing power button to shutdown device when active
FIX - autolock not working unless Selective backlight enabled
Rework - get_action_worker split into more managable chunks
Rework - moved all static variables to a single struct action_last
to be passed through all internal functions
Rework - current action state moved to struct action_current
to be initialized at each get_action /get_action_custom call
Rework - action lookup in button maps changed slightly to prefer fully formed actions
rather than blindly returning action with BUTTON_NONE as pre_button
this should allow actions defined in keymaps positional independence
Rework / Clean-up - moved conditionals on internal functions to inside the functions
-Allows much cleaner code & empty functions should be optimized
out by compiler
Rework / Clean-up - softlock and backlight exemptions code
Clean-up - remove a lot of (now) unused defines
Clean-up - organize / move all exported functions to their own section in the file
Comments added to all internal functions to better explain their purpose
Change-Id: I0ac02d1a2b45826843611513fea3c20a819d2fed
- enable various features in radio screen (like mode switch)
- improve keyboard (short play to select, long play to finish, power to abort)
- enable volume keys in radio screen if available
Change-Id: I01e71291cfd783763ffd55d4fa60610b6900c726
At normal loads:
- disabling auto slow boosts performance at the cost of runtime (~ -5%)
- disabling at max cpu does not noticibly decrease runtime
Change-Id: I5de80201c9a24ce556862151cbd6b21b01708b63
Previously only atomic read/write 8/16/32 were exposed. But it is useful to
be able to read a whole buffer at once, this is more efficient than N times
read8.
Change-Id: I06e331641e1ab1f74c0e16e8c432eafb398e8e6d