fix(app-glasses): scale на паузе — принудительная перерисовка кадра
На паузе ExoPlayer не шлёт кадры — поверхность меняла размер/позицию, но кадр оставался старым (часть видео не видно). requestRedraw(): updateTexImage + drawFrame для всех outputs — вызывается при смене scale (LaunchedEffect) и в surfaceChanged. Подтверждено на железе.
This commit is contained in:
@@ -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))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user