diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/common.h | 2 | ||||
| -rw-r--r-- | src/server/server.c | 19 | ||||
| -rw-r--r-- | src/server/server.h | 1 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/server/common.h b/src/server/common.h index 80afb9b..ffb98ec 100644 --- a/src/server/common.h +++ b/src/server/common.h @@ -31,9 +31,9 @@ enum { CAMU_LIST_ADD = 0, CAMU_LIST_SKIP, CAMU_LIST_SKIPTO, - CAMU_LIST_SHUFFLE, CAMU_LIST_TOGGLE_PAUSE, CAMU_LIST_SEEK, + CAMU_LIST_SHUFFLE, CAMU_LIST_UNSET, CAMU_LIST_END }; diff --git a/src/server/server.c b/src/server/server.c index d91dd6f..a1c3657 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -148,6 +148,7 @@ static bool identify_callback(void *userdata, struct nn_rpc_connection *conn, static void list_sink_callback(void *userdata, u8 op, struct lia_list_entry *entry, s32 sequence, struct lia_timing *timing) { struct camu_server_sink *sink = (struct camu_server_sink *)userdata; + if (!sink->conn) return; switch (op) { case LIANA_SINK_SET: case LIANA_SINK_BUFFER: @@ -225,9 +226,12 @@ static void node_callback(void *userdata, u8 op, u64 duration) case LIANA_NODE_DURATION: resource->load = LIANA_ENTRY_LOADED; resource->duration = duration; - process_pending(resource); + break; + case LIANA_NODE_ERRORED: + resource->load = LIANA_ENTRY_ERRORED; break; } + process_pending(resource); } static void send_clients_current_changed(struct camu_server *server, struct lia_list *list, struct lia_list_entry *entry) @@ -671,10 +675,6 @@ static bool list_action_callback(void *userdata, struct nn_rpc_connection *conn, lia_list_skipto(list, sequence, i); break; } - case CAMU_LIST_SHUFFLE: { - lia_list_shuffle(list); - break; - } case CAMU_LIST_TOGGLE_PAUSE: { s32 sequence = nn_packet_read_s32(packet); f64 pts = nn_packet_read_f64(packet); @@ -684,9 +684,12 @@ static bool list_action_callback(void *userdata, struct nn_rpc_connection *conn, case CAMU_LIST_SEEK: { s32 sequence = nn_packet_read_s32(packet); u32 id = nn_packet_read_u32(packet); - f64 percent = nn_packet_read_f64(packet); - percent = CLAMP(percent, 0.0, 100.0); - lia_list_seek(list, sequence, id, percent); + u64 pos = nn_packet_read_u64(packet); + lia_list_seek(list, sequence, id, pos); + break; + } + case CAMU_LIST_SHUFFLE: { + lia_list_shuffle(list); break; } case CAMU_LIST_UNSET: { diff --git a/src/server/server.h b/src/server/server.h index db7d30c..e335b94 100644 --- a/src/server/server.h +++ b/src/server/server.h @@ -55,4 +55,5 @@ void camu_server_bind_direct(struct camu_server *server); void camu_server_close(struct camu_server *server); void camu_server_free(struct camu_server *server); +// Local compat. void camu_server_local_add(struct camu_server *server, struct nn_packet *packet); |