mirror of
https://github.com/androidx/media.git
synced 2025-05-11 09:39:52 +08:00
Add missing removeDrmEventListener calls.
We remove other source related listeners if a MediaSource is removed from the playlist or the player/source is released. This isn't currently done for the DRM listener. #minor-release PiperOrigin-RevId: 370482571
This commit is contained in:
parent
7af95230cb
commit
45616f916b
@ -340,6 +340,7 @@ import java.util.Set;
|
||||
Log.e(TAG, "Failed to release child source.", e);
|
||||
}
|
||||
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
||||
childSource.mediaSource.removeDrmEventListener(childSource.eventListener);
|
||||
}
|
||||
childSources.clear();
|
||||
enabledMediaSourceHolders.clear();
|
||||
@ -449,6 +450,7 @@ import java.util.Set;
|
||||
Assertions.checkNotNull(childSources.remove(mediaSourceHolder));
|
||||
removedChild.mediaSource.releaseSource(removedChild.caller);
|
||||
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
||||
removedChild.mediaSource.removeDrmEventListener(removedChild.eventListener);
|
||||
enabledMediaSourceHolders.remove(mediaSourceHolder);
|
||||
}
|
||||
}
|
||||
@ -504,12 +506,12 @@ import java.util.Set;
|
||||
|
||||
public final MediaSource mediaSource;
|
||||
public final MediaSource.MediaSourceCaller caller;
|
||||
public final MediaSourceEventListener eventListener;
|
||||
public final ForwardingEventListener eventListener;
|
||||
|
||||
public MediaSourceAndListener(
|
||||
MediaSource mediaSource,
|
||||
MediaSource.MediaSourceCaller caller,
|
||||
MediaSourceEventListener eventListener) {
|
||||
ForwardingEventListener eventListener) {
|
||||
this.mediaSource = mediaSource;
|
||||
this.caller = caller;
|
||||
this.eventListener = eventListener;
|
||||
|
@ -35,7 +35,7 @@ import java.util.HashMap;
|
||||
*/
|
||||
public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
|
||||
private final HashMap<T, MediaSourceAndListener> childSources;
|
||||
private final HashMap<T, MediaSourceAndListener<T>> childSources;
|
||||
|
||||
@Nullable private Handler eventHandler;
|
||||
@Nullable private TransferListener mediaTransferListener;
|
||||
@ -55,7 +55,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
@Override
|
||||
@CallSuper
|
||||
public void maybeThrowSourceInfoRefreshError() throws IOException {
|
||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
||||
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||
childSource.mediaSource.maybeThrowSourceInfoRefreshError();
|
||||
}
|
||||
}
|
||||
@ -63,7 +63,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void enableInternal() {
|
||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
||||
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||
childSource.mediaSource.enable(childSource.caller);
|
||||
}
|
||||
}
|
||||
@ -71,7 +71,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void disableInternal() {
|
||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
||||
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||
childSource.mediaSource.disable(childSource.caller);
|
||||
}
|
||||
}
|
||||
@ -79,9 +79,10 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void releaseSourceInternal() {
|
||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
||||
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||
childSource.mediaSource.releaseSource(childSource.caller);
|
||||
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
||||
childSource.mediaSource.removeDrmEventListener(childSource.eventListener);
|
||||
}
|
||||
childSources.clear();
|
||||
}
|
||||
@ -113,7 +114,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
MediaSourceCaller caller =
|
||||
(source, timeline) -> onChildSourceInfoRefreshed(id, source, timeline);
|
||||
ForwardingEventListener eventListener = new ForwardingEventListener(id);
|
||||
childSources.put(id, new MediaSourceAndListener(mediaSource, caller, eventListener));
|
||||
childSources.put(id, new MediaSourceAndListener<>(mediaSource, caller, eventListener));
|
||||
mediaSource.addEventListener(Assertions.checkNotNull(eventHandler), eventListener);
|
||||
mediaSource.addDrmEventListener(Assertions.checkNotNull(eventHandler), eventListener);
|
||||
mediaSource.prepareSource(caller, mediaTransferListener);
|
||||
@ -128,7 +129,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
* @param id The unique id used to prepare the child source.
|
||||
*/
|
||||
protected final void enableChildSource(@UnknownNull T id) {
|
||||
MediaSourceAndListener enabledChild = Assertions.checkNotNull(childSources.get(id));
|
||||
MediaSourceAndListener<T> enabledChild = Assertions.checkNotNull(childSources.get(id));
|
||||
enabledChild.mediaSource.enable(enabledChild.caller);
|
||||
}
|
||||
|
||||
@ -138,7 +139,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
* @param id The unique id used to prepare the child source.
|
||||
*/
|
||||
protected final void disableChildSource(@UnknownNull T id) {
|
||||
MediaSourceAndListener disabledChild = Assertions.checkNotNull(childSources.get(id));
|
||||
MediaSourceAndListener<T> disabledChild = Assertions.checkNotNull(childSources.get(id));
|
||||
disabledChild.mediaSource.disable(disabledChild.caller);
|
||||
}
|
||||
|
||||
@ -148,9 +149,10 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
* @param id The unique id used to prepare the child source.
|
||||
*/
|
||||
protected final void releaseChildSource(@UnknownNull T id) {
|
||||
MediaSourceAndListener removedChild = Assertions.checkNotNull(childSources.remove(id));
|
||||
MediaSourceAndListener<T> removedChild = Assertions.checkNotNull(childSources.remove(id));
|
||||
removedChild.mediaSource.releaseSource(removedChild.caller);
|
||||
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
||||
removedChild.mediaSource.removeDrmEventListener(removedChild.eventListener);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,14 +195,16 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
||||
return mediaTimeMs;
|
||||
}
|
||||
|
||||
private static final class MediaSourceAndListener {
|
||||
private static final class MediaSourceAndListener<T> {
|
||||
|
||||
public final MediaSource mediaSource;
|
||||
public final MediaSourceCaller caller;
|
||||
public final MediaSourceEventListener eventListener;
|
||||
public final CompositeMediaSource<T>.ForwardingEventListener eventListener;
|
||||
|
||||
public MediaSourceAndListener(
|
||||
MediaSource mediaSource, MediaSourceCaller caller, MediaSourceEventListener eventListener) {
|
||||
MediaSource mediaSource,
|
||||
MediaSourceCaller caller,
|
||||
CompositeMediaSource<T>.ForwardingEventListener eventListener) {
|
||||
this.mediaSource = mediaSource;
|
||||
this.caller = caller;
|
||||
this.eventListener = eventListener;
|
||||
|
Loading…
x
Reference in New Issue
Block a user