diff options
Diffstat (limited to 'src/liana')
| -rw-r--r-- | src/liana/list.c | 18 | ||||
| -rw-r--r-- | src/liana/list.h | 22 |
2 files changed, 21 insertions, 19 deletions
diff --git a/src/liana/list.c b/src/liana/list.c index fa21fe6..fc93fc4 100644 --- a/src/liana/list.c +++ b/src/liana/list.c @@ -96,8 +96,7 @@ static bool entry_load_and_get_duration(struct lia_list *list, struct lia_list_e } } *error = true; - u8 meta = LIANA_META_FAILED; - list->callback(list->userdata, LIANA_LIST_META, entry, &meta); + list->callback(list->userdata, LIANA_LIST_META, entry, (u8[]){ LIANA_META_ENTRY_ERRORED }); return false; } *error = false; @@ -230,12 +229,11 @@ static bool handle_add(struct lia_list *list, struct lia_list_entry *entry) sink->set = list->current; sink->callback(sink->userdata, LIANA_SINK_SET, entry, list->current, &time); } - u8 meta = LIANA_META_PLAYING; - list->callback(list->userdata, LIANA_LIST_META, entry, &meta); + list->callback(list->userdata, LIANA_LIST_META, entry, (u8[]){ LIANA_META_ADDED_ENTRY }); + list->callback(list->userdata, LIANA_LIST_META, entry, (u8[]){ LIANA_META_CURRENT_CHANGED }); } else { entry->start = LIANA_TIMESTAMP_INVALID; - u8 meta = LIANA_META_QUEUED; - list->callback(list->userdata, LIANA_LIST_META, entry, &meta); + list->callback(list->userdata, LIANA_LIST_META, entry, (u8[]){ LIANA_META_ADDED_ENTRY }); } al_array_push(list->entries, entry); return true; @@ -405,8 +403,7 @@ static bool handle_skipto(struct lia_list *list, s32 sequence, s32 index) sink->callback(sink->userdata, LIANA_SINK_SET, target, index, &time); } - u8 meta = LIANA_META_PLAYING; - list->callback(list->userdata, LIANA_LIST_META, target, &meta); + list->callback(list->userdata, LIANA_LIST_META, target, (u8[]){ LIANA_META_CURRENT_CHANGED }); return true; } @@ -521,6 +518,8 @@ static void handle_seek(struct lia_list *list, s32 sequence, u32 id, f64 percent } sink->callback(sink->userdata, LIANA_SINK_SEEK, entry, sequence, &time); } + + list->callback(list->userdata, LIANA_LIST_META, entry, (u8[]){ LIANA_META_ENTRY_SEEKED }); } static bool handle_end(struct lia_list *list, u32 id, u32 reset_id) @@ -567,8 +566,7 @@ static bool handle_end(struct lia_list *list, u32 id, u32 reset_id) sink->set = list->current; } struct lia_list_entry *current = al_array_at(list->entries, list->current); - u8 meta = LIANA_META_PLAYING; - list->callback(list->userdata, LIANA_LIST_META, current, &meta); + list->callback(list->userdata, LIANA_LIST_META, current, (u8[]){ LIANA_META_CURRENT_CHANGED }); } else if (next < size) { struct lia_list_cmd *cmd = list->cmd; cmd->op = SKIPTO; diff --git a/src/liana/list.h b/src/liana/list.h index 3750d09..674f194 100644 --- a/src/liana/list.h +++ b/src/liana/list.h @@ -5,7 +5,7 @@ #include <al/array.h> #define LIANA_SEQUENCE_ANY -1 -#define LIANA_TIMESTAMP_INVALID UINT64_MAX +#define LIANA_TIMESTAMP_INVALID ((u64)-1) #define LIANA_BASE_DELAY 575000Lu // 575ms #define LIANA_BASE_PING 150000Lu // 150ms @@ -16,6 +16,11 @@ //#define LIANA_LIST_SCUFFED_LOOP +// NOTE: To handle an entry being queued right before a skip, keep a global +// "max time until all sinks buffered" and used that instead of LIANA_PAUSE_DELAY (if greater). + +// TODO: Factor in LIANA_BASE_PING. + enum { LIANA_SINK_SET = 0, LIANA_SINK_UNSET, @@ -41,16 +46,15 @@ enum { }; enum { - LIANA_META_PLAYING = 0, - LIANA_META_QUEUED, - LIANA_META_FAILED + LIANA_META_CURRENT_CHANGED = 0, + LIANA_META_ADDED_ENTRY, + LIANA_META_REMOVED_ENTRY, + LIANA_META_ENTRY_PAUSED, + LIANA_META_ENTRY_SEEKED, + LIANA_META_ENTRY_ERRORED, + LIANA_META_ORDER_CHANGED }; -// NOTE: To handle an entry being queued right before a skip, keep a global -// "max time until all sinks buffered" and used that instead of LIANA_PAUSE_DELAY (if greater). - -// TODO: Factor in LIANA_BASE_PING. - enum { LIANA_PAUSE_NONE = 0, LIANA_PAUSE_RESUME, |