Skip to content

Commit 62869e4

Browse files
committed
Set response length in pcm_*
1 parent f9834b2 commit 62869e4

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

virtio-snd.c

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,8 @@ static void virtio_snd_read_chmap_info_handler(
382382
}
383383

384384
static void virtio_snd_read_pcm_set_params(struct virtq_desc *vq_desc,
385-
const virtio_snd_query_info_t *query)
385+
const virtio_snd_query_info_t *query,
386+
uint32_t *plen)
386387
{
387388
virtio_snd_pcm_set_params_t *request = query;
388389
uint32_t id = request->hdr.stream_id;
@@ -407,11 +408,13 @@ static void virtio_snd_read_pcm_set_params(struct virtq_desc *vq_desc,
407408
vsnd_props[id].pp.rate = request->rate;
408409
vsnd_props[id].pp.padding = request->padding;
409410

411+
*plen = 0;
410412
fprintf(stderr, "virtio_snd_read_pcm_set_params\n");
411413
}
412414

413415
static void virtio_snd_read_pcm_prepare(struct virtq_desc *vq_desc,
414-
const virtio_snd_query_info_t *query)
416+
const virtio_snd_query_info_t *query,
417+
uint32_t *plen)
415418
{
416419
virtio_snd_pcm_hdr_t *request = query;
417420
uint32_t stream_id = request->stream_id;
@@ -440,11 +443,13 @@ static void virtio_snd_read_pcm_prepare(struct virtq_desc *vq_desc,
440443
v.stream_id = 0;
441444
pthread_mutex_unlock(&virtio_snd_mutex);
442445

446+
*plen = 0;
443447
fprintf(stderr, "virtio_snd_read_pcm_prepare\n");
444448
}
445449

446450
static void virtio_snd_read_pcm_start(struct virtq_desc *vq_desc,
447-
const virtio_snd_query_info_t *query)
451+
const virtio_snd_query_info_t *query,
452+
uint32_t *plen)
448453
{
449454
virtio_snd_pcm_hdr_t *request = query;
450455
uint32_t stream_id = request->stream_id;
@@ -464,11 +469,13 @@ static void virtio_snd_read_pcm_start(struct virtq_desc *vq_desc,
464469
v.guest_playing = true;
465470
pthread_mutex_unlock(&virtio_snd_mutex);
466471

472+
*plen = 0;
467473
fprintf(stderr, "virtio_snd_read_pcm_start\n");
468474
}
469475

470476
static void virtio_snd_read_pcm_stop(struct virtq_desc *vq_desc,
471-
const virtio_snd_query_info_t *query)
477+
const virtio_snd_query_info_t *query,
478+
uint32_t *plen)
472479
{
473480
virtio_snd_pcm_hdr_t *request = query;
474481
uint32_t stream_id = request->stream_id;
@@ -487,11 +494,13 @@ static void virtio_snd_read_pcm_stop(struct virtq_desc *vq_desc,
487494
v.guest_playing = false;
488495
pthread_mutex_lock(&virtio_snd_mutex);
489496

497+
*plen = 0;
490498
fprintf(stderr, "virtio_snd_read_pcm_stop\n");
491499
}
492500

493501
static void virtio_snd_read_pcm_release(struct virtq_desc *vq_desc,
494-
const virtio_snd_query_info_t *query)
502+
const virtio_snd_query_info_t *query,
503+
uint32_t *plen)
495504
{
496505
virtio_snd_pcm_hdr_t *request = query;
497506
uint32_t stream_id = request->stream_id;
@@ -513,6 +522,7 @@ static void virtio_snd_read_pcm_release(struct virtq_desc *vq_desc,
513522
CNFAClose(vsnd_props[stream_id].audio_host);
514523
free(vsnd_props[stream_id].buf);
515524

525+
*plen = 0;
516526
fprintf(stderr, "virtio_snd_read_pcm_release\n");
517527
}
518528

@@ -624,19 +634,19 @@ static int virtio_snd_desc_handler(virtio_snd_state_t *vsnd,
624634
virtio_snd_read_chmap_info_handler(info, query, plen);
625635
break;
626636
case VIRTIO_SND_R_PCM_SET_PARAMS:
627-
virtio_snd_read_pcm_set_params(vq_desc, query);
637+
virtio_snd_read_pcm_set_params(vq_desc, query, plen);
628638
break;
629639
case VIRTIO_SND_R_PCM_PREPARE:
630-
virtio_snd_read_pcm_prepare(vq_desc, query);
640+
virtio_snd_read_pcm_prepare(vq_desc, query, plen);
631641
break;
632642
case VIRTIO_SND_R_PCM_RELEASE:
633-
virtio_snd_read_pcm_release(vq_desc, query);
643+
virtio_snd_read_pcm_release(vq_desc, query, plen);
634644
break;
635645
case VIRTIO_SND_R_PCM_START:
636-
virtio_snd_read_pcm_start(vq_desc, query);
646+
virtio_snd_read_pcm_start(vq_desc, query, plen);
637647
break;
638648
case VIRTIO_SND_R_PCM_STOP:
639-
virtio_snd_read_pcm_stop(vq_desc, query);
649+
virtio_snd_read_pcm_stop(vq_desc, query, plen);
640650
break;
641651
default:
642652
fprintf(stderr, "%d: unsupported virtio-snd operation!\n", type);

0 commit comments

Comments
 (0)