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
@@ -0,0 +1,37 @@
package pw.binom.viewmate.glasses
import kotlin.test.Test
import kotlin.test.assertEquals
import pw.binom.viewmate.glasses.ui.Side
import pw.binom.viewmate.glasses.ui.scaleOffsetX
/**
* scaleOffsetX — смещение контейнера глаза к центру (к носу):
* левый прижат правым краем к центру, правый — offset 0 (левый край уже у центра).
* Чистая функция — тестируется без Android.
*/
class ScaleOffsetTest {
@Test
fun leftFullScreenNoOffset() {
assertEquals(0, scaleOffsetX(Side.LEFT, 640, 1f))
}
@Test
fun leftScale07Offset() {
assertEquals(192, scaleOffsetX(Side.LEFT, 640, 0.7f))
}
@Test
fun leftScale05Offset() {
assertEquals(320, scaleOffsetX(Side.LEFT, 640, 0.5f))
}
@Test
fun rightNeverOffset() {
assertEquals(0, scaleOffsetX(Side.RIGHT, 640, 1f))
assertEquals(0, scaleOffsetX(Side.RIGHT, 640, 0.7f))
assertEquals(0, scaleOffsetX(Side.RIGHT, 640, 0.5f))
assertEquals(0, scaleOffsetX(Side.RIGHT, 480, 0.5f))
}
}