Fix transcode progress notification
The executor and listener fields are guarded by a lock, but the lock was
not taken out when notifying progress updates.
Test: Will be tested via MediaTranscodingManagerTest but it currently fails due to b/274472195
Fixes: 277383391
Change-Id: Ib8dce559d57564f6383c43bd1c9e2efedda7d92c
diff --git a/apex/framework/java/android/media/MediaTranscodingManager.java b/apex/framework/java/android/media/MediaTranscodingManager.java
index 32f5b46..5a5ead5 100644
--- a/apex/framework/java/android/media/MediaTranscodingManager.java
+++ b/apex/framework/java/android/media/MediaTranscodingManager.java
@@ -190,16 +190,8 @@
return;
}
- // Updates the session progress.
+ // Update session progress and notify clients.
session.updateProgress(newProgress);
-
- // Notifies client the progress update.
- if (session.mProgressUpdateExecutor != null
- && session.mProgressUpdateListener != null) {
- session.mProgressUpdateExecutor.execute(
- () -> session.mProgressUpdateListener.onProgressUpdate(session,
- newProgress));
- }
}
}
@@ -1663,6 +1655,11 @@
private void updateProgress(int newProgress) {
synchronized (mLock) {
mProgress = newProgress;
+ if (mProgressUpdateExecutor != null && mProgressUpdateListener != null) {
+ final OnProgressUpdateListener listener = mProgressUpdateListener;
+ mProgressUpdateExecutor.execute(
+ () -> listener.onProgressUpdate(this, newProgress));
+ }
}
}