From 7bfab8409f4489d44db6126753a8e2cd6019d759 Mon Sep 17 00:00:00 2001 From: Koen Date: Wed, 13 Dec 2023 13:47:38 +0100 Subject: [PATCH] Made FCastCastingDevice more able to reconnect. --- .../casting/FCastCastingDevice.kt | 18 ++++++++++++------ .../platformplayer/views/casting/CastView.kt | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/casting/FCastCastingDevice.kt b/app/src/main/java/com/futo/platformplayer/casting/FCastCastingDevice.kt index e276458e..4df07285 100644 --- a/app/src/main/java/com/futo/platformplayer/casting/FCastCastingDevice.kt +++ b/app/src/main/java/com/futo/platformplayer/casting/FCastCastingDevice.kt @@ -261,7 +261,8 @@ class FCastCastingDevice : CastingDevice { val buffer = ByteArray(4096); Logger.i(TAG, "Started receiving."); - while (_scopeIO?.isActive == true) { + var exceptionOccurred = false; + while (_scopeIO?.isActive == true && !exceptionOccurred) { try { val inputStream = _inputStream ?: break; Log.d(TAG, "Receiving next packet..."); @@ -289,20 +290,25 @@ class FCastCastingDevice : CastingDevice { } try { - handleMessage(Opcode.values().first { it.value == opcode }, json); + handleMessage(Opcode.entries.first { it.value == opcode }, json); } catch (e:Throwable) { Logger.w(TAG, "Failed to handle message.", e); } } catch (e: java.net.SocketException) { Logger.e(TAG, "Socket exception while receiving.", e); - break; + exceptionOccurred = true; } catch (e: Throwable) { Logger.e(TAG, "Exception while receiving.", e); - break; + exceptionOccurred = true; } } - _socket?.close(); - Logger.i(TAG, "Socket disconnected."); + + try { + _socket?.close(); + Logger.i(TAG, "Socket disconnected."); + } catch (e: Throwable) { + Logger.e(TAG, "Failed to close socket.", e) + } connectionState = CastConnectionState.CONNECTING; Thread.sleep(3000); diff --git a/app/src/main/java/com/futo/platformplayer/views/casting/CastView.kt b/app/src/main/java/com/futo/platformplayer/views/casting/CastView.kt index f17ef2ad..087586d3 100644 --- a/app/src/main/java/com/futo/platformplayer/views/casting/CastView.kt +++ b/app/src/main/java/com/futo/platformplayer/views/casting/CastView.kt @@ -124,6 +124,7 @@ class CastView : ConstraintLayout { } } + updateNextPrevious(); _buttonPrevious.setOnClickListener { onPrevious.emit() }; _buttonNext.setOnClickListener { onNext.emit() }; }