From 57cc807072408cb0529329fab695a7ff11f9902c Mon Sep 17 00:00:00 2001 From: Marcin Rajwa Date: Tue, 16 Apr 2019 16:44:51 +0200 Subject: [PATCH] KPB: SET/RESET HOST sink copy mode This sets HOST copy mode to blocking before draining starts and resets it back to normal mode once draining is done. Signed-off-by: Marcin Rajwa --- src/audio/kpb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/audio/kpb.c b/src/audio/kpb.c index e4d64dbda..88907a9aa 100644 --- a/src/audio/kpb.c +++ b/src/audio/kpb.c @@ -744,8 +744,14 @@ static void kpb_init_draining(struct comp_data *kpb, struct kpb_client *cli) kpb->draining_task_data.history_buffer = buff; kpb->draining_task_data.history_depth = history_depth; kpb->draining_task_data.state = &kpb->state; + /* Pause selector copy. */ kpb->rt_sink->sink->state = COMP_STATE_PAUSED; + + /* Set host-sink copy mode to blocking */ + comp_set_attribute(kpb->cli_sink->sink, + COMP_ATTR_COPY_BLOCKING, 1); + /* TODO: schedule draining task */ } } @@ -805,6 +811,10 @@ static uint64_t kpb_draining_task(void *arg) * to client's sink */ *draining_data->state = KPB_DRAINING_ON_DEMAND; + + /* Reset host-sink copy mode back to unblocking */ + comp_set_attribute(sink->sink, COMP_ATTR_COPY_BLOCKING, 0); + trace_kpb("kpb_draining_task(), done."); return 0;