summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-04-09 23:19:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-04-09 23:19:15 +0000
commita779e69600768cd05ea63bdea8d2bbbc7cd2c2d5 (patch)
treeae9d140ba7e5e5ee30ca41b746268080c4183905
parentc85cbfbf4ed78882f1c6d9c81ddc0f48f59890f0 (diff)
parent4e41029811d64aecfa00df0d990eb4934921f404 (diff)
Merge "[GPU Service] Query Game driver blacklists from DeviceConfig." into qt-dev
-rw-r--r--services/core/java/com/android/server/gpu/GpuService.java38
1 files changed, 32 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java
index 647727f795da..0f73f379900b 100644
--- a/services/core/java/com/android/server/gpu/GpuService.java
+++ b/services/core/java/com/android/server/gpu/GpuService.java
@@ -36,6 +36,7 @@ import android.os.Build;
import android.os.Handler;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.provider.DeviceConfig;
import android.provider.Settings;
import android.util.Base64;
import android.util.Slog;
@@ -69,9 +70,11 @@ public class GpuService extends SystemService {
private final String mDriverPackageName;
private final PackageManager mPackageManager;
private final Object mLock = new Object();
+ private final Object mDeviceConfigLock = new Object();
private ContentResolver mContentResolver;
private long mGameDriverVersionCode;
private SettingsObserver mSettingsObserver;
+ private DeviceConfigListener mDeviceConfigListener;
@GuardedBy("mLock")
private Blacklists mBlacklists;
@@ -101,10 +104,11 @@ public class GpuService extends SystemService {
public void onBootPhase(int phase) {
if (phase == PHASE_BOOT_COMPLETED) {
mContentResolver = mContext.getContentResolver();
- mSettingsObserver = new SettingsObserver();
if (mDriverPackageName == null || mDriverPackageName.isEmpty()) {
return;
}
+ mSettingsObserver = new SettingsObserver();
+ mDeviceConfigListener = new DeviceConfigListener();
fetchGameDriverPackageProperties();
processBlacklists();
setBlacklist();
@@ -134,6 +138,24 @@ public class GpuService extends SystemService {
}
}
+ private final class DeviceConfigListener implements DeviceConfig.OnPropertyChangedListener {
+
+ DeviceConfigListener() {
+ super();
+ DeviceConfig.addOnPropertyChangedListener(DeviceConfig.NAMESPACE_GAME_DRIVER,
+ mContext.getMainExecutor(), this);
+ }
+ @Override
+ public void onPropertyChanged(String namespace, String name, String value) {
+ synchronized (mDeviceConfigLock) {
+ if (Settings.Global.GAME_DRIVER_BLACKLISTS.equals(name)) {
+ parseBlacklists(value != null ? value : "");
+ setBlacklist();
+ }
+ }
+ }
+ }
+
private final class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(@NonNull final Context context, @NonNull final Intent intent) {
@@ -229,13 +251,17 @@ public class GpuService extends SystemService {
}
private void processBlacklists() {
- // TODO(b/121350991) Switch to DeviceConfig with property listener.
- String base64String =
- Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS);
- if (base64String == null || base64String.isEmpty()) {
- return;
+ String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER,
+ Settings.Global.GAME_DRIVER_BLACKLISTS);
+ if (base64String == null) {
+ base64String =
+ Settings.Global.getString(mContentResolver,
+ Settings.Global.GAME_DRIVER_BLACKLISTS);
}
+ parseBlacklists(base64String != null ? base64String : "");
+ }
+ private void parseBlacklists(String base64String) {
synchronized (mLock) {
// Reset all blacklists
mBlacklists = null;