mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
[ui-compose] Refactor PlayerSurface to use Kotlin function references
PiperOrigin-RevId: 751424812
This commit is contained in:
parent
09ce64ec21
commit
35303c94a1
@ -57,17 +57,17 @@ fun PlayerSurface(
|
|||||||
PlayerSurfaceInternal(
|
PlayerSurfaceInternal(
|
||||||
player,
|
player,
|
||||||
modifier,
|
modifier,
|
||||||
createView = { SurfaceView(it) },
|
createView = ::SurfaceView,
|
||||||
setViewOnPlayer = { setVideoSurfaceView(it) },
|
setVideoView = Player::setVideoSurfaceView,
|
||||||
clearViewFromPlayer = { clearVideoSurfaceView(it) },
|
clearVideoView = Player::clearVideoSurfaceView,
|
||||||
)
|
)
|
||||||
SURFACE_TYPE_TEXTURE_VIEW ->
|
SURFACE_TYPE_TEXTURE_VIEW ->
|
||||||
PlayerSurfaceInternal(
|
PlayerSurfaceInternal(
|
||||||
player,
|
player,
|
||||||
modifier,
|
modifier,
|
||||||
createView = { TextureView(it) },
|
createView = ::TextureView,
|
||||||
setViewOnPlayer = { setVideoTextureView(it) },
|
setVideoView = Player::setVideoTextureView,
|
||||||
clearViewFromPlayer = { clearVideoTextureView(it) },
|
clearVideoView = Player::clearVideoTextureView,
|
||||||
)
|
)
|
||||||
else -> throw IllegalArgumentException("Unrecognized surface type: $surfaceType")
|
else -> throw IllegalArgumentException("Unrecognized surface type: $surfaceType")
|
||||||
}
|
}
|
||||||
@ -78,8 +78,8 @@ private fun <T : View> PlayerSurfaceInternal(
|
|||||||
player: Player,
|
player: Player,
|
||||||
modifier: Modifier,
|
modifier: Modifier,
|
||||||
createView: (Context) -> T,
|
createView: (Context) -> T,
|
||||||
setViewOnPlayer: Player.(T) -> Unit,
|
setVideoView: Player.(T) -> Unit,
|
||||||
clearViewFromPlayer: Player.(T) -> Unit,
|
clearVideoView: Player.(T) -> Unit,
|
||||||
) {
|
) {
|
||||||
var view by remember { mutableStateOf<T?>(null) }
|
var view by remember { mutableStateOf<T?>(null) }
|
||||||
var registeredPlayer by remember { mutableStateOf<Player?>(null) }
|
var registeredPlayer by remember { mutableStateOf<Player?>(null) }
|
||||||
@ -88,11 +88,11 @@ private fun <T : View> PlayerSurfaceInternal(
|
|||||||
LaunchedEffect(view, player) {
|
LaunchedEffect(view, player) {
|
||||||
registeredPlayer?.let { previousPlayer ->
|
registeredPlayer?.let { previousPlayer ->
|
||||||
if (previousPlayer.isCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE))
|
if (previousPlayer.isCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE))
|
||||||
previousPlayer.clearViewFromPlayer(view)
|
previousPlayer.clearVideoView(view)
|
||||||
registeredPlayer = null
|
registeredPlayer = null
|
||||||
}
|
}
|
||||||
if (player.isCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) {
|
if (player.isCommandAvailable(Player.COMMAND_SET_VIDEO_SURFACE)) {
|
||||||
player.setViewOnPlayer(view)
|
player.setVideoView(view)
|
||||||
registeredPlayer = player
|
registeredPlayer = player
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user