From 7c6798d52ed1babf883e7856eabb7cc36182fb16 Mon Sep 17 00:00:00 2001 From: emanuele-f Date: Tue, 29 Mar 2022 14:31:25 +0200 Subject: [PATCH] Fix wrong connection ID returned on rollover ON rollover, an invalid connection ID was returned, causing the connection details of another connection to be shown. --- .../remote_capture/ConnectionsRegister.java | 15 +++++++-------- .../activities/ConnectionDetailsActivity.java | 4 ++-- .../fragments/ConnectionsFragment.java | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/emanuelef/remote_capture/ConnectionsRegister.java b/app/src/main/java/com/emanuelef/remote_capture/ConnectionsRegister.java index 38960e9f..5b758971 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/ConnectionsRegister.java +++ b/app/src/main/java/com/emanuelef/remote_capture/ConnectionsRegister.java @@ -297,17 +297,16 @@ public class ConnectionsRegister { } public synchronized int getConnPositionById(int incr_id) { - int first = firstPos(); + if(mCurItems <= 0) + return -1; - for(int i = 0; i < mCurItems; i++) { - int pos = (first + i) % mSize; - ConnectionDescriptor item = mItemsRing[pos]; + ConnectionDescriptor first = mItemsRing[firstPos()]; + ConnectionDescriptor last = mItemsRing[lastPos()]; - if((item != null) && (item.incr_id == incr_id)) - return pos; - } + if((incr_id < first.incr_id) || (incr_id > last.incr_id)) + return -1; - return -1; + return(incr_id - first.incr_id); } public synchronized @Nullable ConnectionDescriptor getConnById(int incr_id) { diff --git a/app/src/main/java/com/emanuelef/remote_capture/activities/ConnectionDetailsActivity.java b/app/src/main/java/com/emanuelef/remote_capture/activities/ConnectionDetailsActivity.java index 4ba6472f..12959607 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/activities/ConnectionDetailsActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/activities/ConnectionDetailsActivity.java @@ -45,7 +45,7 @@ import java.util.ArrayList; public class ConnectionDetailsActivity extends BaseActivity implements ConnectionsListener { private static final String TAG = "ConnectionDetails"; - public static final String CONN_EXTRA_KEY = "conn_id"; + public static final String CONN_ID_KEY = "conn_id"; private static final int MAX_CHUNKS_TO_CHECK = 10; private ConnectionDescriptor mConn; private ViewPager2 mPager; @@ -75,7 +75,7 @@ public class ConnectionDetailsActivity extends BaseActivity implements Connectio displayBackAction(); setContentView(R.layout.activity_connection_details); - int incr_id = getIntent().getIntExtra(CONN_EXTRA_KEY, -1); + int incr_id = getIntent().getIntExtra(CONN_ID_KEY, -1); if(incr_id != -1) { ConnectionsRegister reg = CaptureService.getConnsRegister(); if(reg != null) diff --git a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java index 4bbe8932..05f8e44d 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java +++ b/app/src/main/java/com/emanuelef/remote_capture/fragments/ConnectionsFragment.java @@ -205,7 +205,7 @@ public class ConnectionsFragment extends Fragment implements ConnectionsListener if(item != null) { Intent intent = new Intent(requireContext(), ConnectionDetailsActivity.class); - intent.putExtra(ConnectionDetailsActivity.CONN_EXTRA_KEY, item.incr_id); + intent.putExtra(ConnectionDetailsActivity.CONN_ID_KEY, item.incr_id); startActivity(intent); } });