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

Commit 27a95bd5 authored by Andy Hung's avatar Andy Hung
Browse files

AudioRecord: Enforce worker thread join in dtor

Ensure that the AudioRecordThread is joined in dtor. In some
cases if the dtor was called while the worker thread was in
restoreRecord_l() (which had an error due to audioserver restart)
the mStatus check incorrectly prevented join.

Test: atest CtsMediaAudioTestCases
Test: Camera video record and killing audioserver
Test: atest test_callback_race
Bug: 331329042
Change-Id: I2d16e716d8b5945762bc0cfd0b278c5c00ca8f80
parent 339e34a2
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -189,9 +189,6 @@ AudioRecord::~AudioRecord()
}

void AudioRecord::stopAndJoinCallbacks() {
    // Prevent nullptr crash if it did not open properly.
    if (mStatus != NO_ERROR) return;

    // Make sure that callback function exits in the case where
    // it is looping on buffer empty condition in obtainBuffer().
    // Otherwise the callback thread will never exit.