hal: QAF: Fix to resolve hang in dual AAC mix case

-Hang, because Drain-Ready not sent for Assoc-AAC
--Fixed by adding Drain-Ready event for Assoc-AAC

-Hang, because data is written on assoc stream
event when no main or pcm stream is active. Module will
not process the associated data alone
--Fixed by dropping the data on assoc stream if no main or
pcm stream is active

-Hang, because EOS is not raised by module if only
assoc stream is running. Module will keep on waiting for
main or pcm data
--Fixed by sending the Drain-Ready event immediately on assoc
stream if no main or pcm stream is active

-Hang, due to race condition when main and associated
streams are closed simulteneously
--Fixed by protecting with lock.

-Hang in test app if drain ready event is received synchronously
--Fixed by adding a flag to indicated drain-ready event.

Change-Id: I19c0de43657a8de8845b440f8c18f03149e549e5
3 files changed