aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder_control.h
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2012-08-15 17:49:23 +0200
committerMax Kellermann <max@duempel.org>2012-08-15 17:58:15 +0200
commitb5fde6dfa55676560ee8805e8e00bc188a5ad928 (patch)
tree264ab852df3a45a5b03a3fff9b7e99fd364816ec /src/decoder_control.h
parent784d666a8e0c4afae45f18b68cdac7734962520c (diff)
downloadmpd-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.h34
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;
}
/**