summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-02-14 09:18:58 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-02-14 09:18:58 +0000
commit8f14357064d1b8734e2f4dbe2708ace26d5134d1 (patch)
treedddd8922dc270596865588fbed49ab724097ab92 /apps
parent6938255b6b99f353652149057b5fe94fd0bb8f5d (diff)
downloadrockbox-8f14357064d1b8734e2f4dbe2708ace26d5134d1.tar.gz
rockbox-8f14357064d1b8734e2f4dbe2708ace26d5134d1.tar.bz2
rockbox-8f14357064d1b8734e2f4dbe2708ace26d5134d1.zip
Code police buffering.c a little - use already predominant style - shorted lines over 80 cols.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29304 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/buffering.c155
1 files changed, 61 insertions, 94 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index be6cf44aed..cbc47c63e7 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -145,7 +145,8 @@ static struct mutex llist_mutex SHAREDBSS_ATTR;
This is global so that move_handle and rm_handle can invalidate it. */
static struct memory_handle *cached_handle = NULL;
-static struct data_counters {
+static struct data_counters
+{
size_t remaining; /* Amount of data needing to be buffered */
size_t wasted; /* Amount of space available for freeing */
size_t buffered; /* Amount of data currently in the buffer */
@@ -154,7 +155,8 @@ static struct data_counters {
/* Messages available to communicate with the buffering thread */
-enum {
+enum
+{
Q_BUFFER_HANDLE = 1, /* Request buffering of a handle, this should not be
used in a low buffer situation. */
Q_REBUFFER_HANDLE, /* Request reset and rebuffering of a handle at a new
@@ -286,8 +288,8 @@ static struct memory_handle *add_handle(size_t data_size, bool can_wrap,
/* First, will the handle wrap? */
/* If the handle would wrap, move to the beginning of the buffer,
* or if the data must not but would wrap, move it to the beginning */
- if( (new_widx + sizeof(struct memory_handle) > buffer_len) ||
- (!can_wrap && (new_widx + len > buffer_len)) ) {
+ if (new_widx + sizeof(struct memory_handle) > buffer_len ||
+ (!can_wrap && new_widx + len > buffer_len)) {
new_widx = 0;
}
@@ -622,8 +624,7 @@ static bool buffer_handle(int handle_id, size_t to_buffer)
return true;
}
- if (h->fd < 0) /* file closed, reopen */
- {
+ if (h->fd < 0) { /* file closed, reopen */
if (*h->path)
h->fd = open(h->path, O_RDONLY);
@@ -641,10 +642,9 @@ static bool buffer_handle(int handle_id, size_t to_buffer)
trigger_cpu_boost();
- if (h->type == TYPE_ID3)
- {
- if (!get_metadata((struct mp3entry *)(buffer + h->data), h->fd, h->path))
- {
+ if (h->type == TYPE_ID3) {
+ if (!get_metadata((struct mp3entry *)(buffer + h->data),
+ h->fd, h->path)) {
/* metadata parsing failed: clear the buffer. */
memset(buffer + h->data, 0, sizeof(struct mp3entry));
}
@@ -665,8 +665,7 @@ static bool buffer_handle(int handle_id, size_t to_buffer)
uintptr_t offset = h->next ? ringbuf_offset(h->next) : buf_ridx;
ssize_t overlap = ringbuf_add_cross(h->widx, copy_n, offset) + 1;
- if (overlap > 0)
- {
+ if (overlap > 0) {
/* read only up to available space and stop if it would overwrite
or be on top of the reading position or the next handle */
stop = true;
@@ -679,8 +678,7 @@ static bool buffer_handle(int handle_id, size_t to_buffer)
/* rc is the actual amount read */
int rc = read(h->fd, &buffer[h->widx], copy_n);
- if (rc < 0)
- {
+ if (rc < 0) {
/* Some kind of filesystem error, maybe recoverable if not codec */
if (h->type == TYPE_CODEC) {
logf("Partial codec");
@@ -703,23 +701,17 @@ static bool buffer_handle(int handle_id, size_t to_buffer)
/* If this is a large file, see if we need to break or give the codec
* more time */
if (h->type == TYPE_PACKET_AUDIO &&
- pcmbuf_is_lowdata() && !buffer_is_low())
- {
+ pcmbuf_is_lowdata() && !buffer_is_low()) {
sleep(1);
- }
- else
- {
+ } else {
yield();
}
- if (to_buffer == 0)
- {
+ if (to_buffer == 0) {
/* Normal buffering - check queue */
if(!queue_empty(&buffering_queue))
break;
- }
- else
- {
+ } else {
if (to_buffer <= (size_t)rc)
break; /* Done */
to_buffer -= rc;
@@ -801,9 +793,7 @@ static void shrink_handle(struct memory_handle *h)
struct bitmap *bmp = (struct bitmap *)&buffer[h->data];
bmp->data = &buffer[h->data + sizeof(struct bitmap)];
}
- }
- else
- {
+ } else {
/* only move the handle struct */
delta = ringbuf_sub(h->ridx, h->data);
if (!move_handle(&h, &delta, 0, true))
@@ -837,9 +827,7 @@ static bool fill_buffer(void)
if (m) {
return true;
- }
- else
- {
+ } else {
/* only spin the disk down if the filling wasn't interrupted by an
event arriving in the queue. */
storage_sleep();
@@ -851,7 +839,8 @@ static bool fill_buffer(void)
/* Given a file descriptor to a bitmap file, write the bitmap data to the
buffer, with a struct bitmap and the actual data immediately following.
Return value is the total size (struct + data). */
-static int load_image(int fd, const char *path, struct bufopen_bitmap_data *data)
+static int load_image(int fd, const char *path,
+ struct bufopen_bitmap_data *data)
{
int rc;
struct bitmap *bmp = (struct bitmap *)&buffer[buf_widx];
@@ -873,8 +862,7 @@ static int load_image(int fd, const char *path, struct bufopen_bitmap_data *data
- sizeof(struct bitmap);
#ifdef HAVE_JPEG
- if (aa != NULL)
- {
+ if (aa != NULL) {
lseek(fd, aa->pos, SEEK_SET);
rc = clip_jpeg_fd(fd, aa->size, bmp, free, FORMAT_NATIVE|FORMAT_DITHER|
FORMAT_RESIZE|FORMAT_KEEP_ASPECT, NULL);
@@ -930,14 +918,14 @@ int bufopen(const char *file, size_t offset, enum data_type type,
/* No buffer refs until after the mutex_lock call! */
- if (type == TYPE_ID3)
- {
+ if (type == TYPE_ID3) {
/* ID3 case: allocate space, init the handle and return. */
mutex_lock(&llist_mutex);
- struct memory_handle *h = add_handle(sizeof(struct mp3entry), false, true);
- if (h)
- {
+ struct memory_handle *h =
+ add_handle(sizeof(struct mp3entry), false, true);
+
+ if (h) {
handle_id = h->id;
h->fd = -1;
h->filesize = sizeof(struct mp3entry);
@@ -973,8 +961,8 @@ int bufopen(const char *file, size_t offset, enum data_type type,
size_t size = 0;
#ifdef HAVE_ALBUMART
- if (type == TYPE_BITMAP)
- { /* if albumart is embedded, the complete file is not buffered,
+ if (type == TYPE_BITMAP) {
+ /* if albumart is embedded, the complete file is not buffered,
* but only the jpeg part; filesize() would be wrong */
struct bufopen_bitmap_data *aa = (struct bufopen_bitmap_data*)user_data;
if (aa->embedded_albumart)
@@ -995,8 +983,7 @@ int bufopen(const char *file, size_t offset, enum data_type type,
mutex_lock(&llist_mutex);
struct memory_handle *h = add_handle(padded_size, can_wrap, false);
- if (!h)
- {
+ if (!h) {
DEBUGF("%s(): failed to add handle\n", __func__);
mutex_unlock(&llist_mutex);
close(fd);
@@ -1011,8 +998,7 @@ int bufopen(const char *file, size_t offset, enum data_type type,
/* Don't bother to storage align bitmaps because they are not
* loaded directly into the buffer.
*/
- if (type != TYPE_BITMAP)
- {
+ if (type != TYPE_BITMAP) {
/* Align to desired storage alignment */
size_t alignment_pad = STORAGE_OVERLAP(adjusted_offset -
(size_t)(&buffer[buf_widx]));
@@ -1028,18 +1014,14 @@ int bufopen(const char *file, size_t offset, enum data_type type,
h->type = type;
#ifdef HAVE_ALBUMART
- if (type == TYPE_BITMAP)
- {
+ if (type == TYPE_BITMAP) {
/* Bitmap file: we load the data instead of the file */
int rc;
rc = load_image(fd, file, (struct bufopen_bitmap_data*)user_data);
- if (rc <= 0)
- {
+ if (rc <= 0) {
rm_handle(h);
handle_id = ERR_FILE_ERROR;
- }
- else
- {
+ } else {
h->filesize = rc;
h->available = rc;
h->widx = buf_widx + rc; /* safe because the data doesn't wrap */
@@ -1060,19 +1042,15 @@ int bufopen(const char *file, size_t offset, enum data_type type,
mutex_unlock(&llist_mutex);
- if (type == TYPE_CUESHEET)
- {
+ if (type == TYPE_CUESHEET) {
/* Immediately start buffering those */
LOGFQUEUE("buffering >| Q_BUFFER_HANDLE %d", handle_id);
queue_send(&buffering_queue, Q_BUFFER_HANDLE, handle_id);
- }
- else
- {
+ } else {
/* Other types will get buffered in the course of normal operations */
close(fd);
- if (handle_id >= 0)
- {
+ if (handle_id >= 0) {
/* Inform the buffering thread that we added a handle */
LOGFQUEUE("buffering > Q_HANDLE_ADDED %d", handle_id);
queue_post(&buffering_queue, Q_HANDLE_ADDED, handle_id);
@@ -1098,8 +1076,7 @@ int bufalloc(const void *src, size_t size, enum data_type type)
struct memory_handle *h = add_handle(size, false, true);
- if (h)
- {
+ if (h) {
handle_id = h->id;
if (src) {
@@ -1117,7 +1094,7 @@ int bufalloc(const void *src, size_t size, enum data_type type)
h->filesize = size;
h->offset = 0;
h->ridx = buf_widx;
- h->widx = buf_widx + size; /* this is safe because the data doesn't wrap */
+ h->widx = buf_widx + size; /* safe because the data doesn't wrap */
h->data = buf_widx;
h->available = size;
h->type = type;
@@ -1145,20 +1122,21 @@ bool bufclose(int handle_id)
static void rebuffer_handle(int handle_id, size_t newpos)
{
struct memory_handle *h = find_handle(handle_id);
- if (!h)
- {
+
+ if (!h) {
queue_reply(&buffering_queue, ERR_HANDLE_NOT_FOUND);
return;
}
/* When seeking foward off of the buffer, if it is a short seek attempt to
avoid rebuffering the whole track, just read enough to satisfy */
- if (newpos > h->offset && newpos - h->offset < BUFFERING_DEFAULT_FILECHUNK)
- {
+ if (newpos > h->offset &&
+ newpos - h->offset < BUFFERING_DEFAULT_FILECHUNK) {
+
size_t amount = newpos - h->offset;
h->ridx = ringbuf_add(h->data, amount);
- if (buffer_handle(handle_id, amount + 1))
- {
+
+ if (buffer_handle(handle_id, amount + 1)) {
queue_reply(&buffering_queue, 0);
buffer_handle(handle_id, 0); /* Ok, try the rest */
return;
@@ -1175,8 +1153,9 @@ static void rebuffer_handle(int handle_id, size_t newpos)
/* Strip alignment padding then redo */
size_t new_index = ringbuf_add(ringbuf_offset(h), sizeof (*h));
- /* Align to desired storage alignment if space permits - handle could have
- been shrunken too close to the following one after a previous rebuffer. */
+ /* Align to desired storage alignment if space permits - handle could
+ have been shrunken too close to the following one after a previous
+ rebuffer. */
size_t alignment_pad =
STORAGE_OVERLAP(h->offset - (size_t)(&buffer[new_index]));
@@ -1200,8 +1179,7 @@ static void rebuffer_handle(int handle_id, size_t newpos)
if (h->fd >= 0)
lseek(h->fd, h->offset, SEEK_SET);
- if (h->next && ringbuf_sub(next, h->data) <= h->filesize - newpos)
- {
+ if (h->next && ringbuf_sub(next, h->data) <= h->filesize - newpos) {
/* There isn't enough space to rebuffer all of the track from its new
offset, so we ask the user to free some */
DEBUGF("%s(): space is needed\n", __func__);
@@ -1290,8 +1268,7 @@ static struct memory_handle *prep_bufdata(int handle_id, size_t *size,
size_t avail = handle_size_available(h);
- if (avail == 0 && h->filerem == 0)
- {
+ if (avail == 0 && h->filerem == 0) {
/* File is finished reading */
*size = 0;
return h;
@@ -1303,8 +1280,7 @@ static struct memory_handle *prep_bufdata(int handle_id, size_t *size,
realsize = avail + h->filerem;
if (guardbuf_limit && h->type == TYPE_PACKET_AUDIO
- && realsize > GUARD_BUFSIZE)
- {
+ && realsize > GUARD_BUFSIZE) {
logf("data request > guardbuf");
/* If more than the size of the guardbuf is requested and this is a
* bufgetdata, limit to guard_bufsize over the end of the buffer */
@@ -1312,8 +1288,7 @@ static struct memory_handle *prep_bufdata(int handle_id, size_t *size,
/* this ensures *size <= buffer_len - h->ridx + GUARD_BUFSIZE */
}
- if (h->filerem > 0 && avail < realsize)
- {
+ if (h->filerem > 0 && avail < realsize) {
/* Data isn't ready. Request buffering */
buf_request_buffer_handle(handle_id);
/* Wait for the data to be ready */
@@ -1356,15 +1331,12 @@ ssize_t bufread(int handle_id, size_t size, void *dest)
if (!h)
return ERR_HANDLE_NOT_FOUND;
- if (h->ridx + adjusted_size > buffer_len)
- {
+ if (h->ridx + adjusted_size > buffer_len) {
/* the data wraps around the end of the buffer */
size_t read = buffer_len - h->ridx;
memcpy(dest, &buffer[h->ridx], read);
memcpy(dest+read, buffer, adjusted_size - read);
- }
- else
- {
+ } else {
memcpy(dest, &buffer[h->ridx], adjusted_size);
}
@@ -1389,12 +1361,12 @@ ssize_t bufgetdata(int handle_id, size_t size, void **data)
if (!h)
return ERR_HANDLE_NOT_FOUND;
- if (h->ridx + adjusted_size > buffer_len)
- {
+ if (h->ridx + adjusted_size > buffer_len) {
/* the data wraps around the end of the buffer :
use the guard buffer to provide the requested amount of data. */
size_t copy_n = h->ridx + adjusted_size - buffer_len;
- /* prep_bufdata ensures adjusted_size <= buffer_len - h->ridx + GUARD_BUFSIZE,
+ /* prep_bufdata ensures
+ adjusted_size <= buffer_len - h->ridx + GUARD_BUFSIZE,
so copy_n <= GUARD_BUFSIZE */
memcpy(guard_buffer, (const unsigned char *)buffer, copy_n);
}
@@ -1425,8 +1397,7 @@ ssize_t bufgettail(int handle_id, size_t size, void **data)
tidx = ringbuf_sub(h->widx, size);
- if (tidx + size > buffer_len)
- {
+ if (tidx + size > buffer_len) {
size_t copy_n = tidx + size - buffer_len;
memcpy(guard_buffer, (const unsigned char *)buffer, copy_n);
}
@@ -1614,13 +1585,11 @@ void buffering_thread(void)
* for simplicity until its done right */
#if MEMORYSIZE > 8
/* If the disk is spinning, take advantage by filling the buffer */
- else if (storage_disk_is_active() && queue_empty(&buffering_queue))
- {
+ else if (storage_disk_is_active() && queue_empty(&buffering_queue)) {
if (num_handles > 0 && data_counters.useful <= high_watermark)
send_event(BUFFER_EVENT_BUFFER_LOW, 0);
- if (data_counters.remaining > 0 && BUF_USED <= high_watermark)
- {
+ if (data_counters.remaining > 0 && BUF_USED <= high_watermark) {
/* This is a new fill, shrink the buffer up first */
if (!filling)
shrink_buffer();
@@ -1637,9 +1606,7 @@ void buffering_thread(void)
filling = fill_buffer();
else if (data_counters.remaining == 0)
filling = false;
- }
- else if (ev.id == SYS_TIMEOUT)
- {
+ } else if (ev.id == SYS_TIMEOUT) {
if (data_counters.remaining > 0 &&
data_counters.useful <= conf_watermark) {
shrink_buffer();