summaryrefslogtreecommitdiff
path: root/src/bimu
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-02-12 21:09:10 -0500
committerAndrew Opalach <andrew@akon.city> 2024-02-12 21:09:10 -0500
commitbbf3314165182e402ff25acccddc004a87f81ef0 (patch)
tree192eb958781a59e9601e7b7eef9d0eadcb9b8b11 /src/bimu
parent0b7a612a9baf49765db8b127e696913100b70f5f (diff)
downloadcamu-bbf3314165182e402ff25acccddc004a87f81ef0.tar.gz
camu-bbf3314165182e402ff25acccddc004a87f81ef0.tar.bz2
camu-bbf3314165182e402ff25acccddc004a87f81ef0.zip
Initial cmc implementation, sink fixes
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/bimu')
-rw-r--r--src/bimu/vcr.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/bimu/vcr.c b/src/bimu/vcr.c
index fcef62e..109edd7 100644
--- a/src/bimu/vcr.c
+++ b/src/bimu/vcr.c
@@ -26,8 +26,7 @@ static aki_thread_result AKI_THREADCALL vcr_stream_thread(void *userdata)
{
struct bmu_vcr_stream *stream = (struct bmu_vcr_stream *)userdata;
struct bmu_vcr *vcr = stream->vcr;
- do {
- if (!aki_packet_cache_wait(&stream->cache)) break;
+ while (aki_packet_cache_wait(&stream->cache)) {
struct aki_packet *packet = aki_packet_cache_pop(&stream->cache);
if (!packet) {
stream->client->handle_eof(stream->client);
@@ -47,7 +46,7 @@ static aki_thread_result AKI_THREADCALL vcr_stream_thread(void *userdata)
}
stream->client->handle_data_packet(stream->client, packet);
aki_packet_free(packet);
- } while (1);
+ }
return 0;
}
@@ -101,6 +100,8 @@ bool bmu_vcr_push_packet(struct bmu_vcr *vcr, struct aki_packet *packet)
aki_packet_free(packet);
al_log_warn("bimu", "Unhandled error packet.");
break;
+ default:
+ al_assert(false);
}
return true;
}
@@ -114,7 +115,9 @@ static void vcr_stream_close_internal(struct bmu_vcr_stream *stream)
aki_cond_signal(&stream->cond);
}
aki_mutex_unlock(&stream->mutex);
- aki_thread_join(&stream->thread);
+ if (stream->running) {
+ aki_thread_join(&stream->thread);
+ }
struct aki_packet *packet;
while ((packet = aki_packet_cache_pop(&stream->cache))) {
aki_packet_free(packet);