diff --git a/include/villas/nodes/loopback.hpp b/include/villas/nodes/loopback.hpp index 892c44c5f..a7ec662af 100644 --- a/include/villas/nodes/loopback.hpp +++ b/include/villas/nodes/loopback.hpp @@ -43,7 +43,6 @@ struct loopback { int queuelen; enum QueueSignalledMode mode; struct queue_signalled queue; - struct pool pool; }; /** @see node_type::print */ diff --git a/lib/nodes/loopback.cpp b/lib/nodes/loopback.cpp index a8c690e4e..26c76c264 100644 --- a/lib/nodes/loopback.cpp +++ b/lib/nodes/loopback.cpp @@ -36,13 +36,13 @@ int loopback_parse(struct vnode *n, json_t *cfg) const char *mode_str = nullptr; json_error_t err; - int ret; + int ret, copy = 1; /* Default values */ l->mode = QueueSignalledMode::AUTO; l->queuelen = DEFAULT_QUEUE_LENGTH; - ret = json_unpack_ex(cfg, &err, 0, "{ s?: i, s?: s }", + ret = json_unpack_ex(cfg, &err, 0, "{ s?: s }", "queuelen", &l->queuelen, "mode", &mode_str ); @@ -68,6 +68,8 @@ int loopback_parse(struct vnode *n, json_t *cfg) error("Unknown mode '%s' in node %s", mode_str, node_name(n)); } + l->copy = copy; + return 0; } @@ -76,14 +78,7 @@ int loopback_start(struct vnode *n) int ret; struct loopback *l = (struct loopback *) n->_vd; - int len = MAX( - vlist_length(&n->in.signals), - vlist_length(&n->out.signals) - ); - - ret = pool_init(&l->pool, l->queuelen, SAMPLE_LENGTH(len)); - if (ret) - return ret; + int len = vlist_length(&n->in.signals); return queue_signalled_init(&l->queue, l->queuelen, memory_default, l->mode); } @@ -93,10 +88,6 @@ int loopback_stop(struct vnode *n) int ret; struct loopback *l= (struct loopback *) n->_vd; - ret = pool_destroy(&l->pool); - if (ret) - return ret; - return queue_signalled_destroy(&l->queue); } @@ -120,17 +111,10 @@ int loopback_read(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned int loopback_write(struct vnode *n, struct sample *smps[], unsigned cnt, unsigned *release) { struct loopback *l = (struct loopback *) n->_vd; - struct sample *copies[cnt]; - unsigned copied; + sample_incref_many(smps, cnt); - copied = sample_alloc_many(&l->pool, copies, cnt); - if (copied < cnt) - warning("Pool underrun for node %s", node_name(n)); - - sample_copy_many(copies, smps, copied); - - return queue_signalled_push_many(&l->queue, (void **) copies, copied); + return queue_signalled_push_many(&l->queue, (void **) smps, cnt); } char * loopback_print(struct vnode *n)