On 08. 07. 21 15:47, Robert Lee wrote:
Hi Takashi,
It is a little complex to describe the design in detail, but try to explain simply what issue we meet.
If w/o the change, after user resumes from the pause, our system would call snd_compr_drain() or snd_compr_partial_drain() again after it returns from previous drain (when EOF reaches). Then it will block in this drain and no one wake it up because EOF has already reached. I add this change to return from the previous drain.
It looks like that the driver does not call snd_compr_drain_notify() so the state is not updated to SETUP on EOF.
Actually, I am wondering how the pause-during-drain can keep the state in DRAINING. It should have a different design. :)
I already proposed to add a new state (because it's a new state), but the conservative way was elected to avoid user space changes.
Jaroslav