diff options
-rw-r--r-- | src/pipe.c | 21 | ||||
-rw-r--r-- | src/pipe.h | 9 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/pipe.c b/src/pipe.c index fe011f3c2..d0eaf9871 100644 --- a/src/pipe.c +++ b/src/pipe.c @@ -70,6 +70,7 @@ music_pipe_free(struct music_pipe *mp) } #ifndef NDEBUG + bool music_pipe_check_format(const struct music_pipe *pipe, const struct audio_format *audio_format) @@ -80,6 +81,26 @@ music_pipe_check_format(const struct music_pipe *pipe, return !audio_format_defined(&pipe->audio_format) || audio_format_equals(&pipe->audio_format, audio_format); } + +bool +music_pipe_contains(const struct music_pipe *mp, + const struct music_chunk *chunk) +{ + g_mutex_lock(mp->mutex); + + for (const struct music_chunk *i = mp->head; + i != NULL; i = i->next) { + if (i == chunk) { + g_mutex_unlock(mp->mutex); + return true; + } + } + + g_mutex_unlock(mp->mutex); + + return false; +} + #endif const struct music_chunk * diff --git a/src/pipe.h b/src/pipe.h index dd97ce820..8b7b457a5 100644 --- a/src/pipe.h +++ b/src/pipe.h @@ -47,6 +47,7 @@ void music_pipe_free(struct music_pipe *mp); #ifndef NDEBUG + /** * Checks if the audio format if the chunk is equal to the specified * audio_format. @@ -54,6 +55,14 @@ music_pipe_free(struct music_pipe *mp); bool music_pipe_check_format(const struct music_pipe *pipe, const struct audio_format *audio_format); + +/** + * Checks if the specified chunk is enqueued in the music pipe. + */ +bool +music_pipe_contains(const struct music_pipe *mp, + const struct music_chunk *chunk); + #endif /** |