Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89c224e2 authored by SathishKumar Mani's avatar SathishKumar Mani Committed by Iliyan Malchev
Browse files

alsa_sound: prevent lowlatency errors triggering WD reset



- HAL tries to recover from pcm write or read failure
  by closing and reopening pcm driver.
- There is no check when pcm is reopened. If the
  reopen fails it keeps trying multiple times in loop
- Fix the issue by checking error condition and
  return on failure.

Bug: 7253359
Change-Id: Ia15153f5b43bb0f255a8b34b70025a6215484cee
Signed-off-by: default avatarIliyan Malchev <malchev@google.com>
parent 2c798912
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -435,6 +435,13 @@ ssize_t AudioStreamInALSA::read(void *buffer, ssize_t bytes)
                }
                else
                    mHandle->module->open(mHandle);

                if(mHandle->handle == NULL) {
                   ALOGE("read:: PCM device re-open failed");
                   mParent->mLock.unlock();
                   return 0;
                }

                mParent->mLock.unlock();
                continue;
            }
+5 −1
Original line number Diff line number Diff line
@@ -260,8 +260,12 @@ ssize_t AudioStreamOutALSA::write(const void *buffer, size_t bytes)
                     mHandle->rxHandle = NULL;
                     mHandle->module->startVoipCall(mHandle);
                }
                else {
                else
                    mHandle->module->open(mHandle);
                if(mHandle->handle == NULL) {
                   ALOGE("write:: device re-open failed");
                   mParent->mLock.unlock();
                   return bytes;
                }
            }
            mParent->mLock.unlock();