mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add pending sequence before sending the remote session task
#minor-release
PiperOrigin-RevId: 488885069
(cherry picked from commit e1eb8b6dd8)
This commit is contained in:
parent
8cc37db8e5
commit
4adfb5f50f
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());
|
task.run(iSession, result.getSequenceNumber());
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(TAG, "Cannot connect to the service or the session is gone", 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;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -340,15 +340,17 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
SequencedFutureManager.SequencedFuture<SessionResult> result =
|
SequencedFutureManager.SequencedFuture<SessionResult> result =
|
||||||
sequencedFutureManager.createSequencedFuture(
|
sequencedFutureManager.createSequencedFuture(
|
||||||
new SessionResult(SessionResult.RESULT_INFO_SKIPPED));
|
new SessionResult(SessionResult.RESULT_INFO_SKIPPED));
|
||||||
|
int sequenceNumber = result.getSequenceNumber();
|
||||||
|
if (addToPendingMaskingOperations) {
|
||||||
|
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
int sequenceNumber = result.getSequenceNumber();
|
|
||||||
task.run(iSession, sequenceNumber);
|
task.run(iSession, sequenceNumber);
|
||||||
if (addToPendingMaskingOperations) {
|
|
||||||
pendingMaskingSequencedFutureNumbers.add(sequenceNumber);
|
|
||||||
}
|
|
||||||
} catch (RemoteException e) {
|
} catch (RemoteException e) {
|
||||||
Log.w(TAG, "Cannot connect to the service or the session is gone", 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;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -2173,6 +2175,13 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
// Never happens because future.setException will not be called.
|
// Never happens because future.setException will not be called.
|
||||||
throw new IllegalStateException(e);
|
throw new IllegalStateException(e);
|
||||||
} catch (TimeoutException 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);
|
Log.w(TAG, "set/clearVideoSurface takes too long on the session side.", e);
|
||||||
// TODO(b/188888693): Let developers know the failure in their code.
|
// TODO(b/188888693): Let developers know the failure in their code.
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue