diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2018-06-29 20:31:21 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2018-06-29 20:54:04 +0700 |
commit | 6d0156b89a49bc4f482f55fb432375d04d449008 (patch) | |
tree | a06eacf8d65c406d8c98ca82c468b8285acb1aff | |
parent | 379b657c5754832eb518c6477960daa43318909a (diff) |
procqueue.c: rely on item type instead of its position
In the osmo_gapk_pq_prepare() we do allocate an item's buffer
conditionally, only when its type is not sink, because an output
buffer is not required for sink.
Let's use a bit more elegant way to check, whether item is sink.
Change-Id: I770a1d02273d9d8301a9e4ec72426fb8f4060277
-rw-r--r-- | src/procqueue.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/procqueue.c b/src/procqueue.c index 78dee4d..28ad1cf 100644 --- a/src/procqueue.c +++ b/src/procqueue.c @@ -159,25 +159,27 @@ int osmo_gapk_pq_prepare(struct osmo_gapk_pq *pq) { struct osmo_gapk_pq_item *item; + unsigned int buf_size; /* Iterate over all items in queue */ llist_for_each_entry(item, &pq->items, list) { /* The sink item doesn't require an output buffer */ - if (item->list.next != &pq->items) { - unsigned int buf_size = item->len_out; - - /** - * Use maximum known buffer size - * for variable-length codec output - */ - if (!buf_size) - buf_size = VAR_BUF_SIZE; - - /* Allocate memory for an output buffer */ - item->buf = talloc_named_const(item, buf_size, ".buffer"); - if (!item->buf) - return -ENOMEM; - } + if (item->type == OSMO_GAPK_ITEM_TYPE_SINK) + continue; + + buf_size = item->len_out; + + /** + * Use maximum known buffer size + * for variable-length codec output + */ + if (!buf_size) + buf_size = VAR_BUF_SIZE; + + /* Allocate memory for an output buffer */ + item->buf = talloc_named_const(item, buf_size, ".buffer"); + if (!item->buf) + return -ENOMEM; } return 0; |