fix(app-glasses): scale на паузе — принудительная перерисовка кадра

На паузе ExoPlayer не шлёт кадры — поверхность меняла размер/позицию,
но кадр оставался старым (часть видео не видно). requestRedraw():
updateTexImage + drawFrame для всех outputs — вызывается при смене
scale (LaunchedEffect) и в surfaceChanged. Подтверждено на железе.
This commit is contained in:
Hermes Agent
2026-08-20 00:52:21 +03:00
parent 9f20093bbf
commit 896185244b
11 changed files with 201 additions and 27 deletions
@@ -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(