summaryrefslogtreecommitdiff
path: root/src/liana
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana')
-rw-r--r--src/liana/list.c18
-rw-r--r--src/liana/list.h22
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,