Some minor UI refinements

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=135353593
This commit is contained in:
olly 2016-10-06 06:52:12 -07:00 committed by Oliver Woodman
parent 08965c03d0
commit 6c12ec629a
3 changed files with 33 additions and 7 deletions

View file

@ -183,6 +183,14 @@ public final class SimpleExoPlayer implements ExoPlayer {
return renderers[index].getTrackType(); return renderers[index].getTrackType();
} }
/**
* Clears any {@link Surface}, {@link SurfaceHolder}, {@link SurfaceView} or {@link TextureView}
* currently set on the player.
*/
public void clearVideoSurface() {
setVideoSurface(null);
}
/** /**
* Sets the {@link Surface} onto which video will be rendered. The caller is responsible for * Sets the {@link Surface} onto which video will be rendered. The caller is responsible for
* tracking the lifecycle of the surface, and must clear the surface by calling * tracking the lifecycle of the surface, and must clear the surface by calling
@ -240,6 +248,9 @@ public final class SimpleExoPlayer implements ExoPlayer {
if (textureView == null) { if (textureView == null) {
setVideoSurfaceInternal(null); setVideoSurfaceInternal(null);
} else { } else {
if (textureView.getSurfaceTextureListener() != null) {
Log.w(TAG, "Replacing existing SurfaceTextureListener.");
}
SurfaceTexture surfaceTexture = textureView.getSurfaceTexture(); SurfaceTexture surfaceTexture = textureView.getSurfaceTexture();
setVideoSurfaceInternal(surfaceTexture == null ? null : new Surface(surfaceTexture)); setVideoSurfaceInternal(surfaceTexture == null ? null : new Surface(surfaceTexture));
textureView.setSurfaceTextureListener(componentListener); textureView.setSurfaceTextureListener(componentListener);
@ -593,13 +604,17 @@ public final class SimpleExoPlayer implements ExoPlayer {
} }
private void removeSurfaceCallbacks() { private void removeSurfaceCallbacks() {
if (this.textureView != null) { if (textureView != null) {
this.textureView.setSurfaceTextureListener(null); if (textureView.getSurfaceTextureListener() != componentListener) {
this.textureView = null; Log.w(TAG, "SurfaceTextureListener already unset or replaced.");
} else {
textureView.setSurfaceTextureListener(null);
}
textureView = null;
} }
if (this.surfaceHolder != null) { if (surfaceHolder != null) {
this.surfaceHolder.removeCallback(componentListener); surfaceHolder.removeCallback(componentListener);
this.surfaceHolder = null; surfaceHolder = null;
} }
} }

View file

@ -140,6 +140,9 @@ public class PlaybackControlView extends FrameLayout {
* @param player the {@code ExoPlayer} to control. * @param player the {@code ExoPlayer} to control.
*/ */
public void setPlayer(ExoPlayer player) { public void setPlayer(ExoPlayer player) {
if (this.player == player) {
return;
}
if (this.player != null) { if (this.player != null) {
this.player.removeListener(componentListener); this.player.removeListener(componentListener);
} }

View file

@ -112,6 +112,9 @@ public final class SimpleExoPlayerView extends FrameLayout {
* @param player The {@link SimpleExoPlayer} to use. * @param player The {@link SimpleExoPlayer} to use.
*/ */
public void setPlayer(SimpleExoPlayer player) { public void setPlayer(SimpleExoPlayer player) {
if (this.player == player) {
return;
}
if (this.player != null) { if (this.player != null) {
this.player.setTextOutput(null); this.player.setTextOutput(null);
this.player.setVideoListener(null); this.player.setVideoListener(null);
@ -131,7 +134,9 @@ public final class SimpleExoPlayerView extends FrameLayout {
} else { } else {
shutterView.setVisibility(VISIBLE); shutterView.setVisibility(VISIBLE);
} }
setUseController(useController); if (useController) {
controller.setPlayer(player);
}
} }
/** /**
@ -142,6 +147,9 @@ public final class SimpleExoPlayerView extends FrameLayout {
* @param useController If {@code false} the playback control is never used. * @param useController If {@code false} the playback control is never used.
*/ */
public void setUseController(boolean useController) { public void setUseController(boolean useController) {
if (this.useController == useController) {
return;
}
this.useController = useController; this.useController = useController;
if (useController) { if (useController) {
controller.setPlayer(player); controller.setPlayer(player);