Merge "SoundPool: Fix StreamManager JavaThread shutdown" into rvc-dev am: e68ae63ead am: ae70bfc835

Change-Id: I6890347fea34c6c4931c18ccfb834961c1099a30
This commit is contained in:
Automerger Merge Worker
2020-03-04 02:04:39 +00:00

View File

@@ -52,6 +52,12 @@ public:
JavaThread(JavaThread &&) = delete; // uses "this" ptr, not moveable.
~JavaThread() {
join(); // manually block until the future is ready as std::future
// destructor doesn't block unless it comes from std::async
// and it is the last reference to shared state.
}
void join() const {
mFuture.wait();
}
@@ -64,8 +70,9 @@ private:
static int staticFunction(void *data) {
JavaThread *jt = static_cast<JavaThread *>(data);
jt->mF();
jt->mIsClosed = true;
jt->mPromise.set_value();
jt->mIsClosed = true; // publicly inform that we are closed
// after we have accessed all variables.
return 0;
}