From e8b4c97bdfbd54c014efa1ba2d89cf696a285330 Mon Sep 17 00:00:00 2001 From: Wonsik Kim Date: Wed, 30 Aug 2017 16:28:01 -0700 Subject: [PATCH] At STARTED_AS_NEXT, offload MediaPlayer.start() to a separate thread Fixes: 65210445 Fixes: 64915666 Test: adb shell am instrument -e size small -w 'android.media.cts/android.support.test.runner.AndroidJUnitRunner' Change-Id: I73f1cebdd4b990e28f8d466f129e781cba2b5bbf --- media/java/android/media/MediaPlayer.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index 5a16c36545c84..0d99473c69b93 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -3408,7 +3408,7 @@ public class MediaPlayer extends PlayerBase private static void postEventFromNative(Object mediaplayer_ref, int what, int arg1, int arg2, Object obj) { - MediaPlayer mp = (MediaPlayer)((WeakReference)mediaplayer_ref).get(); + final MediaPlayer mp = (MediaPlayer)((WeakReference)mediaplayer_ref).get(); if (mp == null) { return; } @@ -3416,8 +3416,14 @@ public class MediaPlayer extends PlayerBase switch (what) { case MEDIA_INFO: if (arg1 == MEDIA_INFO_STARTED_AS_NEXT) { - // this acquires the wakelock if needed, and sets the client side state - mp.start(); + new Thread(new Runnable() { + @Override + public void run() { + // this acquires the wakelock if needed, and sets the client side state + mp.start(); + } + }).start(); + Thread.yield(); } break;