diff options
Diffstat (limited to 'src/fruits/cmc')
| -rw-r--r-- | src/fruits/cmc/cmc.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/fruits/cmc/cmc.c b/src/fruits/cmc/cmc.c index 1046e41..61ac25a 100644 --- a/src/fruits/cmc/cmc.c +++ b/src/fruits/cmc/cmc.c @@ -29,9 +29,9 @@ static struct cmc_search *get_search_by_id(struct cmc *c, s32 id) } */ -static void parse_list_entry(struct nn_packet *packet, struct cmc_list_entry *entry) +static void parse_list_entry(struct nn_packet *packet, struct cmc_list_entry *entry, u32 id) { - entry->id = nn_packet_read_u32(packet); + entry->id = id; entry->duration = nn_packet_read_u64(packet); entry->start = nn_packet_read_u64(packet); entry->paused_at = nn_packet_read_u64(packet); @@ -65,8 +65,9 @@ static void parse_initial_user_state(struct cmc *c, struct nn_packet *packet) al_array_init(list->entries); u32 inner_count = nn_packet_read_s32(packet); for (u32 j = 0; j < inner_count; j++) { + u32 id = nn_packet_read_u32(packet); struct cmc_list_entry entry; - parse_list_entry(packet, &entry); + parse_list_entry(packet, &entry, id); al_array_push(list->entries, entry); } al_array_push(c->lists, list); @@ -131,8 +132,9 @@ static void client_callback(void *userdata, u8 op, void *opaque) al_array_foreach(c->lists, i, list) { if (al_str_eq(&list->name, &name)) { list->current = nn_packet_read_s32(packet); + u32 id = nn_packet_read_u32(packet); struct cmc_list_entry *entry = &al_array_at(list->entries, list->current); - parse_list_entry(packet, entry); + parse_list_entry(packet, entry, id); break; } } @@ -142,8 +144,9 @@ static void client_callback(void *userdata, u8 op, void *opaque) case LIANA_META_ADDED_ENTRY: { str name; nn_packet_read_str(packet, &name); + u32 id = nn_packet_read_u32(packet); struct cmc_list_entry entry; - parse_list_entry(packet, &entry); + parse_list_entry(packet, &entry, id); struct cmc_list *list; al_array_foreach(c->lists, i, list) { if (al_str_eq(&list->name, &name)) { @@ -160,11 +163,11 @@ static void client_callback(void *userdata, u8 op, void *opaque) struct cmc_list *list; al_array_foreach(c->lists, i, list) { if (al_str_eq(&list->name, &name)) { - u32 id = nn_packet_peek_u32(packet); + u32 id = nn_packet_read_u32(packet); struct cmc_list_entry *entry; al_array_foreach_ptr(list->entries, j, entry) { if (entry->id == id) { - parse_list_entry(packet, entry); + parse_list_entry(packet, entry, id); break; } } |