Buflib: Make shrinking and buflib_available() smarter.
commit2a8eacdbfc5d98b016c480ddaddff100301f721f
authorThomas Martitz <kugel@rockbox.org>
Thu, 17 Nov 2011 17:55:02 +0000 (17 17:55 +0000)
committerThomas Martitz <kugel@rockbox.org>
Thu, 17 Nov 2011 17:55:02 +0000 (17 17:55 +0000)
tree69c79430463bb43c0e3ce96fbef851de6c35b277
parent91206954aa0818e0790857f25f46a53d8e737a20
Buflib: Make shrinking and buflib_available() smarter.

* shrinking now considers freespace just before the alloc-to-be-shrinked,
  that means less (or sometimes none at all) is taken from the audio buffer.
* core_available() now searches for the best free space, instead of simply the end,
  i.e. it will not return 0 if the audio buffer is allocated and there's free space
  before it. It also runs a compaction to ensure maximum contiguous memory.

audio_buffer_available() is also enhanced. It now considers the 256K reserve buffer,
and returns free buflib space instead if the audio buffer is short.

This all fixes the root problem of FS#12344 (Sansa Clip+: PANIC occurred when
dircache is enabled), that alloced from the audio buffer, even if it was very
short and buflib had many more available as free space before it.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31006 a1c6a512-1295-4272-9138-f99709370657
apps/menus/main_menu.c
apps/mpeg.c
apps/playback.c
firmware/buflib.c
firmware/export/audio.h