From d373c55320638baf2ce3f7b5551b4b42ded87eb5 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sat, 3 Sep 2016 12:01:27 -0400 Subject: [PATCH] core/queue: Add a queue_erase_track() function Used to trigger the erase callback on tracks, rather than indexes. Signed-off-by: Anna Schumaker --- core/queue.c | 12 ++++++++++++ include/core/queue.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/core/queue.c b/core/queue.c index ac45ce92..39ed4672 100644 --- a/core/queue.c +++ b/core/queue.c @@ -257,6 +257,18 @@ void queue_erase(struct queue *queue, unsigned int index) __queue_remove(queue, &it); } +void queue_erase_track(struct queue *queue, struct track *track) +{ + struct queue_iter it; + + queue_for_each(queue, &it) { + if (queue_iter_val(&it) == track) { + queue_erase(queue, it.it_pos); + return; + } + } +} + void queue_remove(struct queue *queue, unsigned int index) { struct queue_iter it; diff --git a/include/core/queue.h b/include/core/queue.h index ba77e63f..c2b5e789 100644 --- a/include/core/queue.h +++ b/include/core/queue.h @@ -165,6 +165,9 @@ unsigned int queue_add(struct queue *, struct track *); */ void queue_erase(struct queue *, unsigned int); +/* Called to erase a track from the queue */ +void queue_erase_track(struct queue *, struct track *); + /* Called to remove a track from the queue by index. */ void queue_remove(struct queue *, unsigned int);