[ui-compose] Refactor PlayerSurface to use Kotlin function references

PiperOrigin-RevId: 751424812
This commit is contained in:
jbibik 2025-04-25 08:23:54 -07:00 committed by Copybara-Service
parent 09ce64ec21
commit 35303c94a1

View File

@ -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
} }
} }