summaryrefslogtreecommitdiff
path: root/firmware/export/audio.h
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2011-11-17 17:55:02 +0000
committerThomas Martitz <kugel@rockbox.org>2011-11-17 17:55:02 +0000
commit2a8eacdbfc5d98b016c480ddaddff100301f721f (patch)
tree69c79430463bb43c0e3ce96fbef851de6c35b277 /firmware/export/audio.h
parent91206954aa0818e0790857f25f46a53d8e737a20 (diff)
downloadrockbox-2a8eacdbfc5d98b016c480ddaddff100301f721f.tar.gz
rockbox-2a8eacdbfc5d98b016c480ddaddff100301f721f.zip
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
Diffstat (limited to 'firmware/export/audio.h')
-rw-r--r--firmware/export/audio.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/firmware/export/audio.h b/firmware/export/audio.h
index 57f3c24aae..5309ddd1d1 100644
--- a/firmware/export/audio.h
+++ b/firmware/export/audio.h
@@ -58,6 +58,10 @@ void audio_resume(void);
58void audio_next(void); 58void audio_next(void);
59void audio_prev(void); 59void audio_prev(void);
60int audio_status(void); 60int audio_status(void);
61/* size of the audio buffer */
62size_t audio_buffer_size(void);
63/* size of the buffer available for allocating memory from the audio buffer using core_*()
64 * returns core_available() if audio buffer is not allocated yet */
61size_t audio_buffer_available(void); 65size_t audio_buffer_available(void);
62void audio_ff_rewind(long newpos); 66void audio_ff_rewind(long newpos);
63void audio_flush_and_reload_tracks(void); 67void audio_flush_and_reload_tracks(void);