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
@@ -25,7 +25,7 @@ import androidx.compose.ui.unit.dp
* дублируется и бинокулярно сливается в одну.
*/
@Composable
fun StatusPanelCompose(modifier: Modifier = Modifier) {
fun StatusPanelCompose(modifier: Modifier = Modifier, scale: Float = 1f) {
var data by remember { mutableStateOf<StatusPanelData?>(null) }
val context = LocalContext.current
DisposableEffect(Unit) {
@@ -34,15 +34,17 @@ fun StatusPanelCompose(modifier: Modifier = Modifier) {
onDispose { provider.stop() }
}
val d = data ?: return
val baseStyle = MaterialTheme.typography.bodyMedium
val style = baseStyle.copy(fontSize = baseStyle.fontSize * scale)
Row(
modifier = modifier
.background(Color(0x99000000)) // полупрозрачный чёрный
.padding(horizontal = 10.dp, vertical = 4.dp),
.padding(horizontal = 10.dp * scale, vertical = 4.dp * scale),
verticalAlignment = Alignment.CenterVertically,
) {
Text(d.time, color = Color.White, style = MaterialTheme.typography.bodyMedium)
Spacer(Modifier.width(6.dp))
Text(d.time, color = Color.White, style = style)
Spacer(Modifier.width(6.dp * scale))
// Процент — цветом статуса заряда (зелёный/белый/красный), без квадратика.
Text("${d.percent}%", color = Color(d.chargeColorArgb), style = MaterialTheme.typography.bodyMedium)
Text("${d.percent}%", color = Color(d.chargeColorArgb), style = style)
}
}