From 6c1b89db847f2374c9540cf87040fe6a9dbbf13d Mon Sep 17 00:00:00 2001 From: Compot Developer Date: Thu, 15 Oct 2026 12:10:32 +0000 Subject: [PATCH 1/2] fix: single view on a SurfaceView instead of a TextureView (#76) The TextureView's frames go through the app's own GL composition and window buffer; on a Mali-G31 TV box (Android 10) that buffer's queueBuffer stalled for seconds, growing with every grid/single switch (up to 14 s in 60 cycles). With a SurfaceView, as the grid cells use, the stalls are gone (#76). - Zoom and pan: the view is laid out zoom times the fitted size and moved by the pan; its surface keeps the fitted size (setFixedSize). Same gestures, clamping and double-tap reset as before, on every Android version. - Long-press screenshot and the debug page snapshot: PixelCopy on the snapshot thread (Snapshots.copy), the UI thread does not wait. Before Android 7 a screenshot says it is not available, the snapshot cell says "no picture". - MJPEG to H.264/H.265: the view is hidden and shown again for a new surface, as a grid cell does (#139); the decoder waits until surfaceCreated() and is closed in surfaceDestroyed(). - Version 2.09. --- android/app/build.gradle | 4 +- android/app/lint-baseline.xml | 2 +- .../java/com/openipc/decoder/Decoder.java | 157 ++++++++++++------ .../java/com/openipc/decoder/Snapshots.java | 42 +++-- android/app/src/main/res/layout/decoder.xml | 2 +- 5 files changed, 135 insertions(+), 72 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 92b19f66..c517b841 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -23,8 +23,8 @@ android { applicationId "com.openipc.decoder" minSdk 21 targetSdk 36 - versionCode 33 - versionName "2.08" + versionCode 34 + versionName "2.09" buildConfigField "String", "GIT_HASH", "\"${getGitHash()}\"" } diff --git a/android/app/lint-baseline.xml b/android/app/lint-baseline.xml index ff9091c6..a54bbf72 100644 --- a/android/app/lint-baseline.xml +++ b/android/app/lint-baseline.xml @@ -91,7 +91,7 @@