From 31a540953c1b6ef9390fe0361b451563b08fbca6 Mon Sep 17 00:00:00 2001 From: Colin Kho Date: Tue, 17 Sep 2024 09:59:15 -0700 Subject: [PATCH] Add method to MediaSourceEventListener.EventDispatcher to submit events through a lambda function. This allows clients that implement this interface to submit customized event dispatching logic to the EventDispatcher's listeners --- .../source/MediaSourceEventListener.java | 61 ++++++++----------- 1 file changed, 24 insertions(+), 37 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaSourceEventListener.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaSourceEventListener.java index 4583dc9991..965c6f01b7 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaSourceEventListener.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MediaSourceEventListener.java @@ -26,6 +26,7 @@ import androidx.media3.common.C.DataType; import androidx.media3.common.Format; import androidx.media3.common.Player; import androidx.media3.common.util.Assertions; +import androidx.media3.common.util.Consumer; import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId; import java.io.IOException; @@ -259,12 +260,9 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ public void loadStarted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) { - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onLoadStarted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); - } + dispatchEvent( + (listener) -> + listener.onLoadStarted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); } /** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ @@ -304,13 +302,9 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onLoadCompleted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ public void loadCompleted(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) { - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> - listener.onLoadCompleted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); - } + dispatchEvent( + (listener) -> + listener.onLoadCompleted(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); } /** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ @@ -350,13 +344,9 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onLoadCanceled(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ public void loadCanceled(LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) { - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> - listener.onLoadCanceled(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); - } + dispatchEvent( + (listener) -> + listener.onLoadCanceled(windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData)); } /** @@ -419,14 +409,10 @@ public interface MediaSourceEventListener { MediaLoadData mediaLoadData, IOException error, boolean wasCanceled) { - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> - listener.onLoadError( - windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData, error, wasCanceled)); - } + dispatchEvent( + (listener) -> + listener.onLoadError( + windowIndex, mediaPeriodId, loadEventInfo, mediaLoadData, error, wasCanceled)); } /** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */ @@ -445,12 +431,8 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */ public void upstreamDiscarded(MediaLoadData mediaLoadData) { MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId); - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onUpstreamDiscarded(windowIndex, mediaPeriodId, mediaLoadData)); - } + dispatchEvent( + (listener) -> listener.onUpstreamDiscarded(windowIndex, mediaPeriodId, mediaLoadData)); } /** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */ @@ -473,11 +455,16 @@ public interface MediaSourceEventListener { /** Dispatches {@link #onDownstreamFormatChanged(int, MediaPeriodId, MediaLoadData)}. */ public void downstreamFormatChanged(MediaLoadData mediaLoadData) { + dispatchEvent( + (listener) -> + listener.onDownstreamFormatChanged(windowIndex, mediaPeriodId, mediaLoadData)); + } + + /** Dispatches to a function that supplies a (@link MediaSourceEventListener} */ + public void dispatchEvent(Consumer event) { for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onDownstreamFormatChanged(windowIndex, mediaPeriodId, mediaLoadData)); + postOrRun(listenerAndHandler.handler, () -> event.accept(listener)); } }