Interfaces with core_alloc_* instead of buflib directly.
Provide UT_core_allocator_init() with
a fixed buffer size for predictable results.
Change-Id: I26a7b3101f7782063547940bded52d8202638394
Taken from kugel's out-of-tree version:
https://github.com/kugel-/buflib
Needs some API adaptions. More test will follow.
Note: The expected output needs an update since
the in-tree version of buflib does buffer alignment
and also progressed a bit. Still the tests are a very good start.
Added Rockbox copyright header during import were needed.
Change-Id: Ib39ec4301285f1dd53059b7bed0c0d6646297dc5
The last big filesystem code refactoring
broke a lot of debug statements.
firmware/test/fat/ doesn't build anymore,
but that's more or less unrelated.
Change-Id: I4c9e1289eeabe1b59d436b176f1d35a02176614f
perl -wc reported:
Parentheses missing around "my" list at sims.pl line 9.
Useless use of a variable in void context at sims.pl line 9.
Useless use of a variable in void context at sims.pl line 9.
Useless use of a variable in void context at sims.pl line 9.
Useless use of a variable in void context at sims.pl line 9.
Name "main::doonly" used only once: possible typo at sims.pl line 9.
-> now it's happy.
Change-Id: I3b3685d6918ddb77e47c58bade931897075c6e04
The documentation of buflib first mentions metadata
and then changes to "cookie" without explaining it.
Fix it by sticking to metadata.
Change-Id: I0b36b18f4f2590132901c10326481975f8b9b9da
Document the fact that buffers are movable by default.
Care must be taken to not pass them to functions that yield().
Also clarify other things:
- Passing NULL as "ops" to buflib_alloc_ex() causes
buffers to be movable by default (but not shrinkable).
- If you want shrinkable buffers during compaction,
you have to provide a shrink callback.
- To disable buffer movement, you have to pass NULL
for the move_callback inside the callback structure.
- The concept of default callbacks was removed
long ago, remove the only reference of it.
Change-Id: I3bf0ea6b08b507d80a19f3c2c835aca32b3f7800
If we don't provide a callback to buflib_alloc(),
the buffer is always movable (to reduce fragmentation).
We were passing around buffers to multiple functions
that call yield() and might trigger buflib compaction.
-> add locking while we are working on the buffers.
Also added source code comments that explain
why we added the locking in that particular section.
Change-Id: Ie32867b0b735ddb2905fd4bd51342f61035f836f
If we don't provide a callback to buflib_alloc(),
the buffer is always movable (to reduce fragmentation).
Since we pass our buffer to functions that call yield(),
this could lead to memory corruption on buflib compaction.
Change-Id: Id1fad1822479d692551c55cb8bc87cea7b78f759
Happy New Year!
Change-Id: I228e4b9af9561eb70f75ebb57e333c78065873df
Reviewed-on: http://gerrit.rockbox.org/1093
Reviewed-by: Thomas Jarosch <tomj@simonv.com>
Tested: Thomas Jarosch <tomj@simonv.com>
- Comment keymaps.h
- Tie XWORLD_DEBUG into ROCKBOX_HAS_LOGF to ease debugging
- Fix up the manual a little bit
Change-Id: I12cfb58001199036cd67dbaa27f164e6790a199d
Reviewed-on: http://gerrit.rockbox.org/1084
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
- Leave original ptr untouched if allocation fails
(bail out early)
- Behave like malloc() in case ptr is NULL
Change-Id: Ib854ca19bd0e069999b7780d2d9a533ece705add
ondavx747. Also fixes errors for ondavx777.
Change-Id: I1a5daa844759316df4dec7b869425ea9a174814b
Reviewed-on: http://gerrit.rockbox.org/1081
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
also fix a couple unused vars
Change-Id: Ib05d2e22dd7477bc9bd193232bd3de8a0816beb2
Reviewed-on: http://gerrit.rockbox.org/1079
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
Co-conspirators: Franklin Wei, Benjamin Brown
--------------------------------------------------------------------
This work is based on:
- Fabien Sanglard's "Fabother World" based on
- Piotr Padkowski's newRaw interpreter which was based on
- Gregory Montoir's reverse engineering of
- Eric Chahi's assembly code
--------------------------------------------------------------------
Progress:
* The plugin runs pretty nicely (with sound!) on most color targets
* Keymaps for color LCD targets are complete
* The manual entry is finished
* Grayscale/monochrome support is NOT PLANNED
- the game looks horrible in grayscale! :p
--------------------------------------------------------------------
Notes:
* The original game strings were built-in to the executable, and
were copyrighted and could not be used.
* This port ships with an alternate set of strings by default, but
can load the "official" strings from a file at runtime.
--------------------------------------------------------------------
To be done (in descending order of importance):
* vertical stride compatibility <30% done>
* optimization <10% done>
Change-Id: I3155b0d97c2ac470cb8a2040f40d4139ddcebfa5
Reviewed-on: http://gerrit.rockbox.org/1077
Reviewed-by: Michael Giacomelli <giac2000@hotmail.com>
Stick to the safer version of those two.
Tested mikmod still works with some nice Necros .s3m files.
Change-Id: I6774cdf3345a4c89b2f9cf3bb8d832963ca30c38
No harm done, same values are assigned
in the "default" case.
cppcheck reported:
[rockbox/apps/plugins/zxbox/tapefile.c:674] -> [rockbox/apps/plugins/zxbox/tapefile.c:681]: (warning) Buffer 'seg_desc' is being written before its old content has been used. 'break;' missing?
Change-Id: I2bf044db9022c848c304f1ad88c012bd85ee61df
Otherwise item.cfg_name and item.default_val
will contain garbage. It doesn't seem to have
an effect right now, but who knows what
a future refactoring might do.
cppcheck reported:
[rockbox/apps/settings.c:1268]: (error) Uninitialized variable: item
Change-Id: Ic4d0c302929613de8f291cd2d69cd39db8711107
cppcheck reported:
[rockbox/apps/plugins/wavrecord.c:3672]: (error) Array 'sampr[9][2]' index sampr[9][1] out of bounds.
Change-Id: Ib1e9c25842aa275b15d8d817018cc523269b1f42
The variable 'len' is not used after this statement.
Probably a copy'n'paste leftover from the similar
looking block above.
cppcheck reported:
[rockbox/utils/zenutils/source/shared/cenc.cpp:212]: (style) Same expression on both sides of '-'.
Change-Id: Ia8357187ed39d3fab10d97df75a1146c4f733790
cppcheck reported:
[rockbox/utils/imxtools/sbtools/sb1.c:440]: (warning) Comparison of a boolean expression with an integer other than 0 or 1.
Thanks to Thomas Jarosch
Change-Id: I0078232706d4014a1f2acea310a7a0d0edf7788b
The backlight driver always writes a bogus value
from memory into the LCD brightness register.
Fix it up by adding bounds checks and
use a more sane default value.
While looking at the code, I noticed
that BACKLIGHT_CONTROL_SET probably ignores
the desired brightness level, too.
Note: Please test on real hardware, I don't own it.
cppcheck reported:
[rockbox/firmware/target/arm/s3c2440/mini2440/backlight-mini2440.c:53]: (error) Array 'log_brightness[13]' accessed at index 255, which is out of bounds.
Change-Id: Iaafa929a8adaa97b93ebcb66e1f6bd3bf0dad84e
While the right GPIO location is accessed,
the result of the logical AND was tested wrong.
I don't have this hardware, but I can imagine
that bug caused ide_power_enable() to be called
more times than it needed to be.
cppcheck reported:
[rockbox/firmware/target/arm/pbell/vibe500/power-vibe500.c:101]: (style) Expression '(X & 0x8) == 0x1' is always false.
Change-Id: I98498f79d383c6f29869e170bfc94ba9a0d2ba7e
No need to go out of memory, too ;)
cppcheck reported:
[rockbox/firmware/logf.c:338]: (error) va_list 'ap' was opened but not closed by va_end().
Change-Id: I00e4c04d7e3d5d1415aa5066487ce1d9209e53aa
We should be safe since STM_Load() should
never be called if STM_Test() fails.
Still it's better safe than sorry.
cppcheck reported:
[rockbox/apps/plugins/mikmod/load_stm.c:302]: (error) Array 'STM_Version[3]' accessed at index 3, which is out of bounds.
Change-Id: I914935fd108c492d013de24d17dcb9c227af6cd8
This should only be a problem if the last line
is not terminated by \r or \n though.
cppcheck reported:
[rockbox/apps/playlist.c:234]: (style) Array index 'i' is used before limits check.
Change-Id: I8182b66272ba9c024984c81588bd2a6dbb8255b8
Test code:
--------------
int main(void)
{
static unsigned short extra_spaces[] = { 0, 0x3000 };
return sizeof(extra_spaces);
}
--------------
-> returns four instead of two.
cppcheck reported:
[rockbox/apps/plugins/text_viewer/tv_text_processor.c:180]: (error) Array 'break_chars[27]' acces
sed at index 53, which is out of bounds.
[rockbox/apps/plugins/text_viewer/tv_text_processor.c:195]: (error) Array 'extra_spaces[2]' acces
sed at index 3, which is out of bounds.
Change-Id: I66c305cc5c99e59e7c8e0aa9c86cecbe293ff037
The logic was messed up and always evaluated to true
if buflib_handle is non-zero.
Thanks to JdGordon for verifying the change.
cppcheck reported:
[rockbox/apps/gui/skin_engine/skin_backdrops.c:262]: (warning) Comparison of a boolean expression with an integer other than 0 or 1.
Change-Id: Ib52a73e0a6a2017a631e2dec19b638a2974dab83
The refactoring of the audio thread in this commit
-----------------------------------------------
commit 5857c44017
Author: Michael Sevakis <jethead71@rockbox.org>
Date: Fri May 31 02:41:02 2013 -0400
Refactor audio thread to run both recording and playback.
-----------------------------------------------
moved pcm_init() next to dsp_init() in apps/main.c:init().
Before that pcm_init() was called by audio_init().
Unfortunately the maemo init code didn't properly
wait until the maemo thread was fully initialized,
leading to dangling pointers when the code called
by pcm_init() tried to access maemo's variables.
Fix it by refactoring the "very fast shutdown" semaphore
to wait until maemo is initialized in any case.
This should also fix very rare rockbox crashes
on startup that I got once a year or so.
The new code has been tested by a script that
starts and kills rockbox after one second.
Change-Id: I464efce5f2b71ca869c72a5bc578555b8022e459
Turns out maemo's old gcc 4.2.1 doesn't include any arch
optimized swapXX() functions, just plain C implementations.
Before we pull in lots of linux kernel headers for the
C implementation, just stick to rockbox's own version.
Change-Id: Ic28b41b52fe47f814c7f3897ce15334a42b6c5e2
This one is much more efficient than using a generic table widget.
Change-Id: I3578964eead746e656f6b0a8dcec0f8442deb13d
Reviewed-on: http://gerrit.rockbox.org/1022
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>