From b9bad88eed17bc1c76f811e465f51b9fae54094a Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 29 Apr 2025 16:26:30 +0200 Subject: [PATCH] netjack2: make function to clear events Make a separate function to clear events instead of passing NULL as the midi buffer and segfaulting. --- src/modules/module-netjack2/peer.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/modules/module-netjack2/peer.c b/src/modules/module-netjack2/peer.c index 411bd6abc..3870b3817 100644 --- a/src/modules/module-netjack2/peer.c +++ b/src/modules/module-netjack2/peer.c @@ -368,17 +368,27 @@ static void midi_to_netjack2(struct netjack2_peer *peer, buf->write_pos); } +static inline void netjack2_clear_midi(float *dst, uint32_t size) +{ + struct spa_pod_builder b = { 0, }; + struct spa_pod_frame f; + spa_pod_builder_init(&b, dst, size); + spa_pod_builder_push_sequence(&b, &f, 0); + spa_pod_builder_pop(&b, &f); +} + static inline void netjack2_to_midi(float *dst, uint32_t size, struct nj2_midi_buffer *buf) { struct spa_pod_builder b = { 0, }; uint32_t i; struct spa_pod_frame f; - size_t offset = size - buf->write_pos - - sizeof(*buf) - (buf->event_count * sizeof(struct nj2_midi_event)); + size_t offset = size - buf->write_pos - sizeof(*buf) - + (buf->event_count * sizeof(struct nj2_midi_event)); spa_pod_builder_init(&b, dst, size); spa_pod_builder_push_sequence(&b, &f, 0); - for (i = 0; buf != NULL && i < buf->event_count; i++) { + + for (i = 0; i < buf->event_count; i++) { struct nj2_midi_event *ev = &buf->event[i]; uint8_t *data; size_t s; @@ -1088,7 +1098,7 @@ static int netjack2_recv_data(struct netjack2_peer *peer, } for (i = 0; i < n_midi; i++) { if (!midi[i].filled && midi[i].data != NULL) - netjack2_to_midi(midi[i].data, peer->params.period_size * sizeof(float), NULL); + netjack2_clear_midi(midi[i].data, peer->params.period_size * sizeof(float)); } peer->sync.cycle = ntohl(header.cycle); return 0;