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)); + } } }