Make sure that onTransformationError is called once

The second error is probably a consequence of the first one.

#minor-release

PiperOrigin-RevId: 424619944
This commit is contained in:
kimvde 2022-01-27 16:31:47 +00:00 committed by Andrew Lewis
parent 8ec18086f2
commit 98a997295e

View File

@ -933,26 +933,24 @@ public final class Transformer {
} catch (RuntimeException e) {
resourceReleaseException = TransformationException.createForUnexpected(e);
}
if (exception == null && resourceReleaseException == null) {
// TODO(b/213341814): Add event flags for Transformer events.
listeners.queueEvent(
/* eventFlag= */ C.INDEX_UNSET,
listener -> listener.onTransformationCompleted(mediaItem));
listeners.flushEvents();
return;
if (exception == null) {
// We only report the exception caused by releasing the resources if there is no other
// exception. It is more intuitive to call the error callback only once and reporting the
// exception caused by releasing the resources can be confusing if it is a consequence of
// the first exception.
exception = resourceReleaseException;
}
if (exception != null) {
TransformationException finalException = exception;
// TODO(b/213341814): Add event flags for Transformer events.
listeners.queueEvent(
/* eventFlag= */ C.INDEX_UNSET,
listener -> listener.onTransformationError(mediaItem, exception));
}
if (resourceReleaseException != null) {
TransformationException finalResourceReleaseException = resourceReleaseException;
listener -> listener.onTransformationError(mediaItem, finalException));
} else {
listeners.queueEvent(
/* eventFlag= */ C.INDEX_UNSET,
listener -> listener.onTransformationError(mediaItem, finalResourceReleaseException));
listener -> listener.onTransformationCompleted(mediaItem));
}
listeners.flushEvents();
}