diff options
author | Max Kellermann <max@duempel.org> | 2012-08-15 17:49:23 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-08-15 17:58:15 +0200 |
commit | b5fde6dfa55676560ee8805e8e00bc188a5ad928 (patch) | |
tree | 264ab852df3a45a5b03a3fff9b7e99fd364816ec /src/decoder_control.h | |
parent | 784d666a8e0c4afae45f18b68cdac7734962520c (diff) | |
download | mpd-b5fde6dfa55676560ee8805e8e00bc188a5ad928.tar.gz mpd-b5fde6dfa55676560ee8805e8e00bc188a5ad928.tar.xz mpd-b5fde6dfa55676560ee8805e8e00bc188a5ad928.zip |
decoder_control: add function _is_current_song()
Replaces _current_song().
Diffstat (limited to '')
-rw-r--r-- | src/decoder_control.h | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/src/decoder_control.h b/src/decoder_control.h index 743c8fb58..7305e5813 100644 --- a/src/decoder_control.h +++ b/src/decoder_control.h @@ -276,21 +276,27 @@ decoder_lock_has_failed(struct decoder_control *dc) return ret; } -static inline const struct song * -decoder_current_song(const struct decoder_control *dc) -{ - switch (dc->state) { - case DECODE_STATE_STOP: - case DECODE_STATE_ERROR: - return NULL; - - case DECODE_STATE_START: - case DECODE_STATE_DECODE: - return dc->song; - } +/** + * Check if the specified song is currently being decoded. If the + * decoder is not running currently (or being started), then this + * function returns false in any case. + * + * Caller must lock the object. + */ +gcc_pure +bool +decoder_is_current_song(const struct decoder_control *dc, + const struct song *song); - assert(false); - return NULL; +gcc_pure +static inline bool +decoder_lock_is_current_song(struct decoder_control *dc, + const struct song *song) +{ + decoder_lock(dc); + const bool result = decoder_is_current_song(dc, song); + decoder_unlock(dc); + return result; } /** |