diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java index a10bd038d7..461b146b8d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java @@ -22,6 +22,7 @@ import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.drm.DrmSessionEventListener; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; +import com.google.android.exoplayer2.util.MediaSourceEventDispatcher; import java.util.ArrayList; import java.util.HashSet; @@ -133,22 +134,44 @@ public abstract class BaseMediaSource implements MediaSource { @Override public final void addEventListener(Handler handler, MediaSourceEventListener eventListener) { - eventDispatcher.addEventListener(handler, eventListener); + addEventListenerInternal(handler, eventListener, MediaSourceEventListener.class); } @Override public final void removeEventListener(MediaSourceEventListener eventListener) { - eventDispatcher.removeEventListener(eventListener); + removeEventListenerInternal(eventListener, MediaSourceEventListener.class); } @Override public final void addDrmEventListener(Handler handler, DrmSessionEventListener eventListener) { - eventDispatcher.addEventListener(handler, eventListener, DrmSessionEventListener.class); + addEventListenerInternal(handler, eventListener, DrmSessionEventListener.class); } @Override public final void removeDrmEventListener(DrmSessionEventListener eventListener) { - eventDispatcher.removeEventListener(eventListener, DrmSessionEventListener.class); + removeEventListenerInternal(eventListener, DrmSessionEventListener.class); + } + + /** + * Adds a listener to the internal {@link MediaSourceEventDispatcher} with the provided type. + * + *
NOTE: Read the caveats on {@link MediaSourceEventDispatcher#addEventListener(Handler,
+ * Object, Class)} when deciding what value to pass for {@code listenerClass}.
+ *
+ * @see MediaSourceEventDispatcher#addEventListener(Handler, Object, Class)
+ */
+ protected final This is equivalent to {@link #addEventListener(Handler, Object, Class)} with {@code
- * listenerClass = MediaSourceEventListener.class} and is intended to ease the transition to
- * using {@link MediaSourceEventDispatcher} everywhere.
- *
- * @param handler A handler on the which listener events will be posted.
- * @param eventListener The listener to be added.
- */
- public void addEventListener(Handler handler, MediaSourceEventListener eventListener) {
- addEventListener(handler, eventListener, MediaSourceEventListener.class);
- }
-
- /**
- * Removes a {@link MediaSourceEventListener} from the event dispatcher.
- *
- * This is equivalent to {@link #removeEventListener(Object, Class)} with {@code
- * listenerClass = MediaSourceEventListener.class} and is intended to ease the transition to
- * using {@link MediaSourceEventDispatcher} everywhere.
- *
- * @param eventListener The listener to be removed.
- */
- public void removeEventListener(MediaSourceEventListener eventListener) {
- removeEventListener(eventListener, MediaSourceEventListener.class);
- }
-
public void mediaPeriodCreated() {
dispatch(
(listener, windowIndex, mediaPeriodId) ->