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

Commit 782ede8c authored by Andrei-Valentin Onea's avatar Andrei-Valentin Onea Committed by Android (Google) Code Review
Browse files

Merge "Attempt to fix deadlock on saveOverrides" into sc-dev

parents 9b8c0184 d23af5ed
Loading
Loading
Loading
Loading
+14 −12
Original line number Original line Diff line number Diff line
@@ -257,8 +257,8 @@ final class CompatConfig {
                addChange(c);
                addChange(c);
            }
            }
            c.addPackageOverride(packageName, overrides, allowedState, versionCode);
            c.addPackageOverride(packageName, overrides, allowedState, versionCode);
            invalidateCache();
        }
        }
        invalidateCache();
        return alreadyKnown;
        return alreadyKnown;
    }
    }


@@ -379,10 +379,10 @@ final class CompatConfig {
                CompatChange change = mChanges.valueAt(i);
                CompatChange change = mChanges.valueAt(i);
                removeOverrideUnsafe(change, packageName, versionCode);
                removeOverrideUnsafe(change, packageName, versionCode);
            }
            }
        }
        saveOverrides();
        saveOverrides();
        invalidateCache();
        invalidateCache();
    }
    }
    }


    /**
    /**
     * Removes overrides whose change ID is specified in {@code overridesToRemove} that were
     * Removes overrides whose change ID is specified in {@code overridesToRemove} that were
@@ -626,7 +626,18 @@ final class CompatConfig {
        if (mOverridesFile == null) {
        if (mOverridesFile == null) {
            return;
            return;
        }
        }
        Overrides overrides = new Overrides();
        synchronized (mChanges) {
        synchronized (mChanges) {
            List<ChangeOverrides> changeOverridesList = overrides.getChangeOverrides();
            for (int idx = 0; idx < mChanges.size(); ++idx) {
                CompatChange c = mChanges.valueAt(idx);
                ChangeOverrides changeOverrides = c.saveOverrides();
                if (changeOverrides != null) {
                    changeOverridesList.add(changeOverrides);
                }
            }
        }
        synchronized (mOverridesFile) {
            // Create the file if it doesn't already exist
            // Create the file if it doesn't already exist
            try {
            try {
                mOverridesFile.createNewFile();
                mOverridesFile.createNewFile();
@@ -636,15 +647,6 @@ final class CompatConfig {
            }
            }
            try (PrintWriter out = new PrintWriter(mOverridesFile)) {
            try (PrintWriter out = new PrintWriter(mOverridesFile)) {
                XmlWriter writer = new XmlWriter(out);
                XmlWriter writer = new XmlWriter(out);
                Overrides overrides = new Overrides();
                List<ChangeOverrides> changeOverridesList = overrides.getChangeOverrides();
                for (int idx = 0; idx < mChanges.size(); ++idx) {
                    CompatChange c = mChanges.valueAt(idx);
                    ChangeOverrides changeOverrides = c.saveOverrides();
                    if (changeOverrides != null) {
                        changeOverridesList.add(changeOverrides);
                    }
                }
                XmlWriter.write(writer, overrides);
                XmlWriter.write(writer, overrides);
            } catch (IOException e) {
            } catch (IOException e) {
                Slog.e(TAG, e.toString());
                Slog.e(TAG, e.toString());