Merge "MediaPlayer: fix use after free for mMediaTimeProvider"
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index abbfa88..040152a 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -2645,7 +2645,7 @@
*/
private synchronized void setSubtitleAnchor() {
if ((mSubtitleController == null) && (ActivityThread.currentApplication() != null)) {
- getMediaTimeProvider();
+ final TimeProvider timeProvider = (TimeProvider) getMediaTimeProvider();
final HandlerThread thread = new HandlerThread("SetSubtitleAnchorThread");
thread.start();
Handler handler = new Handler(thread.getLooper());
@@ -2653,7 +2653,8 @@
@Override
public void run() {
Context context = ActivityThread.currentApplication();
- mSubtitleController = new SubtitleController(context, mTimeProvider, MediaPlayer.this);
+ mSubtitleController =
+ new SubtitleController(context, timeProvider, MediaPlayer.this);
mSubtitleController.setAnchor(new Anchor() {
@Override
public void setSubtitleWidget(RenderingWidget subtitleWidget) {
@@ -2661,7 +2662,7 @@
@Override
public Looper getSubtitleLooper() {
- return mTimeProvider.mEventHandler.getLooper();
+ return timeProvider.mEventHandler.getLooper();
}
});
thread.getLooper().quitSafely();
diff --git a/media/java/android/media/SubtitleTrack.java b/media/java/android/media/SubtitleTrack.java
index 5596c32..0705d97 100644
--- a/media/java/android/media/SubtitleTrack.java
+++ b/media/java/android/media/SubtitleTrack.java
@@ -263,7 +263,9 @@
}
updateView(mActiveCues);
mNextScheduledTimeMs = -1;
- mTimeProvider.notifyAt(MediaTimeProvider.NO_TIME, this);
+ if (mTimeProvider != null) {
+ mTimeProvider.notifyAt(MediaTimeProvider.NO_TIME, this);
+ }
}
/** @hide */