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