From fe4c2970542d2499524a7471d35658218e348cea Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Sat, 8 Apr 2023 16:46:05 +0000 Subject: 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 --- .../java/android/media/MediaTranscodingManager.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) 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 @@ public final class MediaTranscodingManager { 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 @@ public final class MediaTranscodingManager { private void updateProgress(int newProgress) { synchronized (mLock) { mProgress = newProgress; + if (mProgressUpdateExecutor != null && mProgressUpdateListener != null) { + final OnProgressUpdateListener listener = mProgressUpdateListener; + mProgressUpdateExecutor.execute( + () -> listener.onProgressUpdate(this, newProgress)); + } } } -- cgit v1.2.3