Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b42ce1f0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fixed concurrency issue in DcTracker" into rvc-dev am: 6ec8fdf8

Change-Id: I42c30c6d02188916c3dcbe4e6f2210feeaef9445
parents cae9dbdd 6ec8fdf8
Loading
Loading
Loading
Loading
+26 −29
Original line number Diff line number Diff line
@@ -599,7 +599,7 @@ public class DcTracker extends Handler {
    private ArrayList<DataProfile> mLastDataProfileList = new ArrayList<>();

    /** RAT name ===> (downstream, upstream) bandwidth values from carrier config. */
    private final ConcurrentHashMap<String, Pair<Integer, Integer>> mBandwidths =
    private ConcurrentHashMap<String, Pair<Integer, Integer>> mBandwidths =
            new ConcurrentHashMap<>();

    /**
@@ -3806,8 +3806,7 @@ public class DcTracker extends Handler {
     * @param useLte For NR NSA, whether to use LTE value for upstream or not
     */
    private void updateLinkBandwidths(String[] bandwidths, boolean useLte) {
        synchronized (mBandwidths) {
            mBandwidths.clear();
        ConcurrentHashMap<String, Pair<Integer, Integer>> temp = new ConcurrentHashMap<>();
        for (String config : bandwidths) {
            int downstream = 14;
            int upstream = 14;
@@ -3821,25 +3820,23 @@ public class DcTracker extends Handler {
                    } catch (NumberFormatException ignored) {
                    }
                }
                    mBandwidths.put(kv[0], new Pair<>(downstream, upstream));
                temp.put(kv[0], new Pair<>(downstream, upstream));
            }
        }
        if (useLte) {
                Pair<Integer, Integer> ltePair = mBandwidths.get(DctConstants.RAT_NAME_LTE);
            Pair<Integer, Integer> ltePair = temp.get(DctConstants.RAT_NAME_LTE);
            if (ltePair != null) {
                    if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA)) {
                        mBandwidths.put(DctConstants.RAT_NAME_NR_NSA, new Pair<>(
                                mBandwidths.get(DctConstants.RAT_NAME_NR_NSA).first,
                                ltePair.second));
                    }
                    if (mBandwidths.containsKey(DctConstants.RAT_NAME_NR_NSA_MMWAVE)) {
                        mBandwidths.put(DctConstants.RAT_NAME_NR_NSA_MMWAVE, new Pair<>(
                                mBandwidths.get(DctConstants.RAT_NAME_NR_NSA_MMWAVE).first,
                                ltePair.second));
                if (temp.containsKey(DctConstants.RAT_NAME_NR_NSA)) {
                    temp.put(DctConstants.RAT_NAME_NR_NSA, new Pair<>(
                            temp.get(DctConstants.RAT_NAME_NR_NSA).first, ltePair.second));
                }
                if (temp.containsKey(DctConstants.RAT_NAME_NR_NSA_MMWAVE)) {
                    temp.put(DctConstants.RAT_NAME_NR_NSA_MMWAVE, new Pair<>(
                            temp.get(DctConstants.RAT_NAME_NR_NSA_MMWAVE).first, ltePair.second));
                }
            }
        }
        mBandwidths = temp;
        for (DataConnection dc : mDataConnections.values()) {
            dc.sendMessage(DataConnection.EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED);
        }