OSDN Git Service

Fix CalledFromWrongThreadException in MediaPlayer's subtitle support
authorLajos Molnar <lajos@google.com>
Thu, 12 Sep 2013 05:10:01 +0000 (22:10 -0700)
committerLajos Molnar <lajos@google.com>
Thu, 12 Sep 2013 22:35:31 +0000 (15:35 -0700)
Call selectTrack/setSubtitleWidget only from MP's looper or the
applications's event thread, which is the same for now (we only
support subtitles in VideoView.)

Change-Id: Ic1de923b801f28657f37e0330b95c321931a6960
Signed-off-by: Lajos Molnar <lajos@google.com>
Bug: 10691837
Bug: 10326117

media/java/android/media/MediaPlayer.java

index bcdc1c8..7acf8af 100644 (file)
@@ -1819,8 +1819,6 @@ public class MediaPlayer implements SubtitleController.Listener
                 scanner.close();
                 mOutOfBandSubtitleTracks.add(track);
                 track.onData(contents, true /* eos */, ~0 /* runID: keep forever */);
-                // update default track selection
-                mSubtitleController.selectDefaultTrack();
                 return MEDIA_INFO_EXTERNAL_METADATA_UPDATE;
             }
 
@@ -2232,9 +2230,12 @@ public class MediaPlayer implements SubtitleController.Listener
                     break;
                 case MEDIA_INFO_METADATA_UPDATE:
                     scanInternalSubtitleTracks();
-                    break;
+                    // fall through
+
                 case MEDIA_INFO_EXTERNAL_METADATA_UPDATE:
                     msg.arg1 = MEDIA_INFO_METADATA_UPDATE;
+                    // update default track selection
+                    mSubtitleController.selectDefaultTrack();
                     break;
                 }