mirror of
https://github.com/samsonjs/media.git
synced 2026-03-30 10:15:48 +00:00
Add pending sequence before sending the remote session task
#minor-release PiperOrigin-RevId: 488885069
This commit is contained in:
parent
cfe36af847
commit
e1eb8b6dd8
2 changed files with 16 additions and 6 deletions
|
|
@ -194,7 +194,8 @@ import org.checkerframework.checker.initialization.qual.UnderInitialization;
|
|||
task.run(iSession, result.getSequenceNumber());
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Cannot connect to the service or the session is gone", e);
|
||||
result.set(LibraryResult.ofError(RESULT_ERROR_SESSION_DISCONNECTED));
|
||||
sequencedFutureManager.setFutureResult(
|
||||
result.getSequenceNumber(), LibraryResult.ofError(RESULT_ERROR_SESSION_DISCONNECTED));
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -340,15 +340,17 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||
SequencedFutureManager.SequencedFuture<SessionResult> result =
|
||||
sequencedFutureManager.createSequencedFuture(
|
||||
new SessionResult(SessionResult.RESULT_INFO_SKIPPED));
|
||||
int sequenceNumber = result.getSequenceNumber();
|
||||
if (addToPendingMaskingOperations) {
|
||||
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
|
||||
}
|
||||
try {
|
||||
int sequenceNumber = result.getSequenceNumber();
|
||||
task.run(iSession, sequenceNumber);
|
||||
if (addToPendingMaskingOperations) {
|
||||
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Cannot connect to the service or the session is gone", e);
|
||||
result.set(new SessionResult(SessionResult.RESULT_ERROR_SESSION_DISCONNECTED));
|
||||
pendingMaskingSequencedFutureNumbers.remove(sequenceNumber);
|
||||
sequencedFutureManager.setFutureResult(
|
||||
sequenceNumber, new SessionResult(SessionResult.RESULT_ERROR_SESSION_DISCONNECTED));
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
|
|
@ -2173,6 +2175,13 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
|||
// Never happens because future.setException will not be called.
|
||||
throw new IllegalStateException(e);
|
||||
} catch (TimeoutException e) {
|
||||
if (future instanceof SequencedFutureManager.SequencedFuture) {
|
||||
int sequenceNumber =
|
||||
((SequencedFutureManager.SequencedFuture<SessionResult>) future).getSequenceNumber();
|
||||
pendingMaskingSequencedFutureNumbers.remove(sequenceNumber);
|
||||
sequencedFutureManager.setFutureResult(
|
||||
sequenceNumber, new SessionResult(SessionResult.RESULT_ERROR_UNKNOWN));
|
||||
}
|
||||
Log.w(TAG, "set/clearVideoSurface takes too long on the session side.", e);
|
||||
// TODO(b/188888693): Let developers know the failure in their code.
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue