Loading services/core/java/com/android/server/wm/LetterboxConfigurationPersister.java +19 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.wm; import static android.os.StrictMode.setThreadPolicy; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; Loading @@ -23,6 +25,8 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.os.Environment; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; import android.util.AtomicFile; import android.util.Slog; Loading Loading @@ -125,7 +129,7 @@ class LetterboxConfigurationPersister { final File prefFiles = new File(configFolder, LETTERBOX_CONFIGURATION_FILENAME); mConfigurationFile = new AtomicFile(prefFiles); mPersisterQueue = persisterQueue; readCurrentConfiguration(); runWithDiskReadsThreadPolicy(this::readCurrentConfiguration); } /** Loading Loading @@ -275,6 +279,20 @@ class LetterboxConfigurationPersister { } } // The LetterboxConfigurationDeviceConfig needs to access the // file with the current reachability position once when the // device boots. Because DisplayThread uses allowIo=false // accessing a file triggers a DiskReadViolation. // Here we use StrictMode to allow the current thread to read // the AtomicFile once in the current thread restoring the // original ThreadPolicy after that. private void runWithDiskReadsThreadPolicy(Runnable runnable) { final ThreadPolicy currentPolicy = StrictMode.getThreadPolicy(); setThreadPolicy(new ThreadPolicy.Builder().permitDiskReads().build()); runnable.run(); setThreadPolicy(currentPolicy); } private static class UpdateValuesCommand implements PersisterQueue.WriteQueueItem<UpdateValuesCommand> { Loading Loading
services/core/java/com/android/server/wm/LetterboxConfigurationPersister.java +19 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server.wm; import static android.os.StrictMode.setThreadPolicy; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; Loading @@ -23,6 +25,8 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.os.Environment; import android.os.StrictMode; import android.os.StrictMode.ThreadPolicy; import android.util.AtomicFile; import android.util.Slog; Loading Loading @@ -125,7 +129,7 @@ class LetterboxConfigurationPersister { final File prefFiles = new File(configFolder, LETTERBOX_CONFIGURATION_FILENAME); mConfigurationFile = new AtomicFile(prefFiles); mPersisterQueue = persisterQueue; readCurrentConfiguration(); runWithDiskReadsThreadPolicy(this::readCurrentConfiguration); } /** Loading Loading @@ -275,6 +279,20 @@ class LetterboxConfigurationPersister { } } // The LetterboxConfigurationDeviceConfig needs to access the // file with the current reachability position once when the // device boots. Because DisplayThread uses allowIo=false // accessing a file triggers a DiskReadViolation. // Here we use StrictMode to allow the current thread to read // the AtomicFile once in the current thread restoring the // original ThreadPolicy after that. private void runWithDiskReadsThreadPolicy(Runnable runnable) { final ThreadPolicy currentPolicy = StrictMode.getThreadPolicy(); setThreadPolicy(new ThreadPolicy.Builder().permitDiskReads().build()); runnable.run(); setThreadPolicy(currentPolicy); } private static class UpdateValuesCommand implements PersisterQueue.WriteQueueItem<UpdateValuesCommand> { Loading