From 451ebee56f9908edab8fa9d84232b0afb09da361 Mon Sep 17 00:00:00 2001 From: Sergey Volkov Date: Fri, 12 Nov 2021 13:46:37 +0300 Subject: [PATCH] fix: IndexOutOfBoundsException in displayInfoList --- server/build.gradle | 2 +- .../java/com/genymobile/scrcpy/WebSocketConnection.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/build.gradle b/server/build.gradle index 6ebf59f1..8eb67ea7 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -7,7 +7,7 @@ android { minSdkVersion 21 targetSdkVersion 30 versionCode 11900 - versionName "1.19-ws1" + versionName "1.19-ws2" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/server/src/main/java/com/genymobile/scrcpy/WebSocketConnection.java b/server/src/main/java/com/genymobile/scrcpy/WebSocketConnection.java index f5fdc207..5e348b62 100644 --- a/server/src/main/java/com/genymobile/scrcpy/WebSocketConnection.java +++ b/server/src/main/java/com/genymobile/scrcpy/WebSocketConnection.java @@ -119,7 +119,7 @@ public class WebSocketConnection extends Connection { + 4; // client id int additionalLength = 0; int[] displayIds = Device.getDisplayIds(); - List displayInfoList = new ArrayList<>(); + HashMap displayInfoHashMap = new HashMap<>(); HashMap connectionsCount = new HashMap<>(); HashMap displayInfoMap = new HashMap<>(); HashMap videoSettingsBytesMap = new HashMap<>(); @@ -127,7 +127,7 @@ public class WebSocketConnection extends Connection { for (int displayId : displayIds) { DisplayInfo displayInfo = Device.getDisplayInfo(displayId); - displayInfoList.add(displayId, displayInfo); + displayInfoHashMap.put(displayId, displayInfo); byte[] displayInfoBytes = displayInfo.toByteArray(); additionalLength += displayInfoBytes.length; displayInfoMap.put(displayId, displayInfoBytes); @@ -163,7 +163,7 @@ public class WebSocketConnection extends Connection { initialInfo.put(DEVICE_NAME_BYTES, 0, Math.min(DEVICE_NAME_FIELD_LENGTH - 1, DEVICE_NAME_BYTES.length)); initialInfo.position(MAGIC_BYTES_INITIAL.length + DEVICE_NAME_FIELD_LENGTH); initialInfo.putInt(displayIds.length); - for (DisplayInfo displayInfo : displayInfoList) { + for (DisplayInfo displayInfo : displayInfoHashMap.values()) { int displayId = displayInfo.getDisplayId(); if (displayInfoMap.containsKey(displayId)) { initialInfo.put(displayInfoMap.get(displayId));