Retry if interrupted before mMessageThread has joined

Bug: 24342101

If interrupted during mMessageThread.join(), retry the join instead of
assuming the thread has joined and continuing.  Continuing to destroy
the context will cause a segfault when the message thread attempts to
use the destroyed context.

Change-Id: I3213091a0e996449bceb403dffca3063786d5a65
This commit is contained in:
Pirama Arumuga Nainar
2015-10-02 12:06:10 -07:00
parent 86e67d708d
commit 2f25ce7753

View File

@@ -1574,9 +1574,16 @@ public class RenderScript {
nContextDeinitToClient(mContext);
mMessageThread.mRun = false;
try {
mMessageThread.join();
} catch(InterruptedException e) {
// Wait for mMessageThread to join. Try in a loop, in case this thread gets interrupted
// during the wait.
boolean hasJoined = false;
while (!hasJoined) {
try {
mMessageThread.join();
hasJoined = true;
} catch(InterruptedException e) {
}
}
nContextDestroy();