From a1ce5eda4343242cd84a3cb62497963fcc896f92 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 6 May 2025 11:53:30 +0200 Subject: [PATCH 1/2] Fix synced ImageVariables showing black images --- .../main/java/com/futo/platformplayer/models/ImageVariable.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/futo/platformplayer/models/ImageVariable.kt b/app/src/main/java/com/futo/platformplayer/models/ImageVariable.kt index 97fe6408..83e2b45f 100644 --- a/app/src/main/java/com/futo/platformplayer/models/ImageVariable.kt +++ b/app/src/main/java/com/futo/platformplayer/models/ImageVariable.kt @@ -29,7 +29,7 @@ data class ImageVariable( Glide.with(imageView) .load(bitmap) .into(imageView) - } else if(resId != null) { + } else if(resId != null && resId > 0) { Glide.with(imageView) .load(resId) .into(imageView) From d686fa327bbed1215de9dbd1945008caa4e37fa4 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Tue, 6 May 2025 12:40:24 +0200 Subject: [PATCH 2/2] Incorrect gzip compression --- .../sync/internal/SyncSocketSession.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt index 910957b0..ab0a0da6 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt @@ -3,6 +3,7 @@ package com.futo.platformplayer.sync.internal import android.os.Build import com.futo.platformplayer.LittleEndianDataInputStream import com.futo.platformplayer.LittleEndianDataOutputStream +import com.futo.platformplayer.copyToOutputStream import com.futo.platformplayer.ensureNotMainThread import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.noise.protocol.CipherStatePair @@ -11,6 +12,7 @@ import com.futo.platformplayer.noise.protocol.HandshakeState import com.futo.platformplayer.states.StateSync import com.futo.platformplayer.sync.internal.ChannelRelayed.Companion import kotlinx.coroutines.CompletableDeferred +import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream import java.io.InputStream import java.io.OutputStream @@ -24,6 +26,7 @@ import java.nio.ByteOrder import java.util.Base64 import java.util.Locale import java.util.concurrent.ConcurrentHashMap +import java.util.zip.GZIPInputStream import java.util.zip.GZIPOutputStream import kotlin.math.min import kotlin.system.measureTimeMillis @@ -837,12 +840,13 @@ class SyncSocketSession { if (!isGzipSupported) throw Exception("Failed to handle packet, gzip is not supported for this opcode (opcode = ${opcode}, subOpcode = ${subOpcode}, data.length = ${data.remaining()}).") - val compressedStream = ByteArrayOutputStream() - GZIPOutputStream(compressedStream).use { gzipStream -> - gzipStream.write(data.array(), data.position(), data.remaining()) - gzipStream.finish() + val compressedStream = ByteArrayInputStream(data.array(), data.position(), data.remaining()); + var outputStream = ByteArrayOutputStream(); + GZIPInputStream(compressedStream).use { gzipStream -> + gzipStream.copyToOutputStream(outputStream); + gzipStream.close(); } - data = ByteBuffer.wrap(compressedStream.toByteArray()) + data = ByteBuffer.wrap(outputStream.toByteArray()) } when (opcode) {