aboutsummaryrefslogtreecommitdiff
path: root/example-fs-bb48/usb-cdc.c
diff options
context:
space:
mode:
Diffstat (limited to 'example-fs-bb48/usb-cdc.c')
-rw-r--r--example-fs-bb48/usb-cdc.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/example-fs-bb48/usb-cdc.c b/example-fs-bb48/usb-cdc.c
index 30d4ccd..58588c8 100644
--- a/example-fs-bb48/usb-cdc.c
+++ b/example-fs-bb48/usb-cdc.c
@@ -594,14 +594,13 @@ stream_recv (struct stream *st, uint8_t *buf)
r = -1;
else
{
- stream.flags &= ~FLAG_RECV_AVAIL;
- do
+ while (1)
{
- chopstx_cond_wait (&st->cnd, &st->mtx);
if ((stream.flags & FLAG_RECV_AVAIL))
{
r = stream.recv_len;
memcpy (buf, stream.recv_buf, r);
+ stream.flags &= ~FLAG_RECV_AVAIL;
break;
}
else if ((stream.flags & FLAG_CONNECTED) == 0)
@@ -609,8 +608,8 @@ stream_recv (struct stream *st, uint8_t *buf)
r = -1;
break;
}
+ chopstx_cond_wait (&st->cnd, &st->mtx);
}
- while (1);
}
chopstx_mutex_unlock (&st->mtx);