fix(app-glasses): scale на паузе — принудительная перерисовка кадра
На паузе ExoPlayer не шлёт кадры — поверхность меняла размер/позицию, но кадр оставался старым (часть видео не видно). requestRedraw(): updateTexImage + drawFrame для всех outputs — вызывается при смене scale (LaunchedEffect) и в surfaceChanged. Подтверждено на железе.
This commit is contained in:
@@ -68,6 +68,9 @@ fun GlassesScreen(
|
||||
// трекбар: пока тянем — слайдер следует за пальцем; отпустили — абсолютный SEEK
|
||||
var sliderValue by remember { mutableStateOf<Float?>(null) }
|
||||
|
||||
// масштаб экрана очков (0.5..1): слайдер пишет в PhoneState, в очки — при отпускании
|
||||
var scale by remember { mutableStateOf(app.state.scale) }
|
||||
|
||||
val actions = app.actions
|
||||
|
||||
// активное скачивание на очки: первое с незавершённым файлом
|
||||
@@ -155,6 +158,31 @@ fun GlassesScreen(
|
||||
}
|
||||
}
|
||||
|
||||
// масштаб экрана очков: весь экран уменьшается (0.5..1), картина прижимается к носу
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(horizontal = 14.dp),
|
||||
) {
|
||||
Text(
|
||||
text = "Масштаб: ${"%.2f".format(scale)}",
|
||||
color = PhoneMuted,
|
||||
fontSize = 11.sp,
|
||||
modifier = Modifier.padding(start = 8.dp),
|
||||
)
|
||||
Slider(
|
||||
value = scale,
|
||||
onValueChange = { scale = it },
|
||||
onValueChangeFinished = {
|
||||
app.state.scale = scale
|
||||
val a = actions
|
||||
if (a != null) scope.launch { a.applyScale(scale) }
|
||||
},
|
||||
valueRange = 0.5f..1f,
|
||||
steps = 9, // шаг 0.05
|
||||
)
|
||||
}
|
||||
|
||||
// активная загрузка контента на очки
|
||||
if (activeGlassesItem != null) {
|
||||
Text(
|
||||
|
||||
Reference in New Issue
Block a user