Fix issue 3302649.
The cause of the problem is that AudioTrack::start() can fail if it is called from a newly created thread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited. This is possible as the thread ID used by the Thread class is not the TID. The fix consists in clearing the thread ID before exiting the thread loop. Change-Id: I66e679665c384403cb3ba2c31746f5de72d5836d
This commit is contained in:
parent
b69f49bab9
commit
fe2c46327f
1 changed files with 3 additions and 0 deletions
|
|
@ -774,6 +774,9 @@ int Thread::_threadLoop(void* user)
|
|||
self->mExitPending = true;
|
||||
self->mLock.lock();
|
||||
self->mRunning = false;
|
||||
// clear thread ID so that requestExitAndWait() does not exit if
|
||||
// called by a new thread using the same thread ID as this one.
|
||||
self->mThread = thread_id_t(-1);
|
||||
self->mThreadExitedCondition.broadcast();
|
||||
self->mLock.unlock();
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue