mirror of
https://github.com/androidx/media.git
synced 2025-05-12 10:09:55 +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);
|
Log.e(TAG, "Failed to release child source.", e);
|
||||||
}
|
}
|
||||||
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
||||||
|
childSource.mediaSource.removeDrmEventListener(childSource.eventListener);
|
||||||
}
|
}
|
||||||
childSources.clear();
|
childSources.clear();
|
||||||
enabledMediaSourceHolders.clear();
|
enabledMediaSourceHolders.clear();
|
||||||
@ -449,6 +450,7 @@ import java.util.Set;
|
|||||||
Assertions.checkNotNull(childSources.remove(mediaSourceHolder));
|
Assertions.checkNotNull(childSources.remove(mediaSourceHolder));
|
||||||
removedChild.mediaSource.releaseSource(removedChild.caller);
|
removedChild.mediaSource.releaseSource(removedChild.caller);
|
||||||
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
||||||
|
removedChild.mediaSource.removeDrmEventListener(removedChild.eventListener);
|
||||||
enabledMediaSourceHolders.remove(mediaSourceHolder);
|
enabledMediaSourceHolders.remove(mediaSourceHolder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -504,12 +506,12 @@ import java.util.Set;
|
|||||||
|
|
||||||
public final MediaSource mediaSource;
|
public final MediaSource mediaSource;
|
||||||
public final MediaSource.MediaSourceCaller caller;
|
public final MediaSource.MediaSourceCaller caller;
|
||||||
public final MediaSourceEventListener eventListener;
|
public final ForwardingEventListener eventListener;
|
||||||
|
|
||||||
public MediaSourceAndListener(
|
public MediaSourceAndListener(
|
||||||
MediaSource mediaSource,
|
MediaSource mediaSource,
|
||||||
MediaSource.MediaSourceCaller caller,
|
MediaSource.MediaSourceCaller caller,
|
||||||
MediaSourceEventListener eventListener) {
|
ForwardingEventListener eventListener) {
|
||||||
this.mediaSource = mediaSource;
|
this.mediaSource = mediaSource;
|
||||||
this.caller = caller;
|
this.caller = caller;
|
||||||
this.eventListener = eventListener;
|
this.eventListener = eventListener;
|
||||||
|
@ -35,7 +35,7 @@ import java.util.HashMap;
|
|||||||
*/
|
*/
|
||||||
public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
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 Handler eventHandler;
|
||||||
@Nullable private TransferListener mediaTransferListener;
|
@Nullable private TransferListener mediaTransferListener;
|
||||||
@ -55,7 +55,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
@Override
|
@Override
|
||||||
@CallSuper
|
@CallSuper
|
||||||
public void maybeThrowSourceInfoRefreshError() throws IOException {
|
public void maybeThrowSourceInfoRefreshError() throws IOException {
|
||||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||||
childSource.mediaSource.maybeThrowSourceInfoRefreshError();
|
childSource.mediaSource.maybeThrowSourceInfoRefreshError();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,7 +63,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
@Override
|
@Override
|
||||||
@CallSuper
|
@CallSuper
|
||||||
protected void enableInternal() {
|
protected void enableInternal() {
|
||||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||||
childSource.mediaSource.enable(childSource.caller);
|
childSource.mediaSource.enable(childSource.caller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
@Override
|
@Override
|
||||||
@CallSuper
|
@CallSuper
|
||||||
protected void disableInternal() {
|
protected void disableInternal() {
|
||||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||||
childSource.mediaSource.disable(childSource.caller);
|
childSource.mediaSource.disable(childSource.caller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,9 +79,10 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
@Override
|
@Override
|
||||||
@CallSuper
|
@CallSuper
|
||||||
protected void releaseSourceInternal() {
|
protected void releaseSourceInternal() {
|
||||||
for (MediaSourceAndListener childSource : childSources.values()) {
|
for (MediaSourceAndListener<T> childSource : childSources.values()) {
|
||||||
childSource.mediaSource.releaseSource(childSource.caller);
|
childSource.mediaSource.releaseSource(childSource.caller);
|
||||||
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
childSource.mediaSource.removeEventListener(childSource.eventListener);
|
||||||
|
childSource.mediaSource.removeDrmEventListener(childSource.eventListener);
|
||||||
}
|
}
|
||||||
childSources.clear();
|
childSources.clear();
|
||||||
}
|
}
|
||||||
@ -113,7 +114,7 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
MediaSourceCaller caller =
|
MediaSourceCaller caller =
|
||||||
(source, timeline) -> onChildSourceInfoRefreshed(id, source, timeline);
|
(source, timeline) -> onChildSourceInfoRefreshed(id, source, timeline);
|
||||||
ForwardingEventListener eventListener = new ForwardingEventListener(id);
|
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.addEventListener(Assertions.checkNotNull(eventHandler), eventListener);
|
||||||
mediaSource.addDrmEventListener(Assertions.checkNotNull(eventHandler), eventListener);
|
mediaSource.addDrmEventListener(Assertions.checkNotNull(eventHandler), eventListener);
|
||||||
mediaSource.prepareSource(caller, mediaTransferListener);
|
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.
|
* @param id The unique id used to prepare the child source.
|
||||||
*/
|
*/
|
||||||
protected final void enableChildSource(@UnknownNull T id) {
|
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);
|
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.
|
* @param id The unique id used to prepare the child source.
|
||||||
*/
|
*/
|
||||||
protected final void disableChildSource(@UnknownNull T id) {
|
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);
|
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.
|
* @param id The unique id used to prepare the child source.
|
||||||
*/
|
*/
|
||||||
protected final void releaseChildSource(@UnknownNull T id) {
|
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.releaseSource(removedChild.caller);
|
||||||
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
removedChild.mediaSource.removeEventListener(removedChild.eventListener);
|
||||||
|
removedChild.mediaSource.removeDrmEventListener(removedChild.eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -193,14 +195,16 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
|
|||||||
return mediaTimeMs;
|
return mediaTimeMs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class MediaSourceAndListener {
|
private static final class MediaSourceAndListener<T> {
|
||||||
|
|
||||||
public final MediaSource mediaSource;
|
public final MediaSource mediaSource;
|
||||||
public final MediaSourceCaller caller;
|
public final MediaSourceCaller caller;
|
||||||
public final MediaSourceEventListener eventListener;
|
public final CompositeMediaSource<T>.ForwardingEventListener eventListener;
|
||||||
|
|
||||||
public MediaSourceAndListener(
|
public MediaSourceAndListener(
|
||||||
MediaSource mediaSource, MediaSourceCaller caller, MediaSourceEventListener eventListener) {
|
MediaSource mediaSource,
|
||||||
|
MediaSourceCaller caller,
|
||||||
|
CompositeMediaSource<T>.ForwardingEventListener eventListener) {
|
||||||
this.mediaSource = mediaSource;
|
this.mediaSource = mediaSource;
|
||||||
this.caller = caller;
|
this.caller = caller;
|
||||||
this.eventListener = eventListener;
|
this.eventListener = eventListener;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user