Loading services/core/java/com/android/server/gpu/GpuService.java +32 −6 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.Build; import android.os.Handler; import android.os.Handler; import android.os.SystemProperties; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Settings; import android.util.Base64; import android.util.Base64; import android.util.Slog; import android.util.Slog; Loading Loading @@ -69,9 +70,11 @@ public class GpuService extends SystemService { private final String mDriverPackageName; private final String mDriverPackageName; private final PackageManager mPackageManager; private final PackageManager mPackageManager; private final Object mLock = new Object(); private final Object mLock = new Object(); private final Object mDeviceConfigLock = new Object(); private ContentResolver mContentResolver; private ContentResolver mContentResolver; private long mGameDriverVersionCode; private long mGameDriverVersionCode; private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; private DeviceConfigListener mDeviceConfigListener; @GuardedBy("mLock") @GuardedBy("mLock") private Blacklists mBlacklists; private Blacklists mBlacklists; Loading Loading @@ -101,10 +104,11 @@ public class GpuService extends SystemService { public void onBootPhase(int phase) { public void onBootPhase(int phase) { if (phase == PHASE_BOOT_COMPLETED) { if (phase == PHASE_BOOT_COMPLETED) { mContentResolver = mContext.getContentResolver(); mContentResolver = mContext.getContentResolver(); mSettingsObserver = new SettingsObserver(); if (mDriverPackageName == null || mDriverPackageName.isEmpty()) { if (mDriverPackageName == null || mDriverPackageName.isEmpty()) { return; return; } } mSettingsObserver = new SettingsObserver(); mDeviceConfigListener = new DeviceConfigListener(); fetchGameDriverPackageProperties(); fetchGameDriverPackageProperties(); processBlacklists(); processBlacklists(); setBlacklist(); setBlacklist(); Loading Loading @@ -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 { private final class PackageReceiver extends BroadcastReceiver { @Override @Override public void onReceive(@NonNull final Context context, @NonNull final Intent intent) { public void onReceive(@NonNull final Context context, @NonNull final Intent intent) { Loading Loading @@ -229,13 +251,17 @@ public class GpuService extends SystemService { } } private void processBlacklists() { private void processBlacklists() { // TODO(b/121350991) Switch to DeviceConfig with property listener. String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER, String base64String = Settings.Global.GAME_DRIVER_BLACKLISTS); Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS); if (base64String == null) { if (base64String == null || base64String.isEmpty()) { base64String = return; Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS); } parseBlacklists(base64String != null ? base64String : ""); } } private void parseBlacklists(String base64String) { synchronized (mLock) { synchronized (mLock) { // Reset all blacklists // Reset all blacklists mBlacklists = null; mBlacklists = null; Loading Loading
services/core/java/com/android/server/gpu/GpuService.java +32 −6 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.os.Build; import android.os.Handler; import android.os.Handler; import android.os.SystemProperties; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserHandle; import android.provider.DeviceConfig; import android.provider.Settings; import android.provider.Settings; import android.util.Base64; import android.util.Base64; import android.util.Slog; import android.util.Slog; Loading Loading @@ -69,9 +70,11 @@ public class GpuService extends SystemService { private final String mDriverPackageName; private final String mDriverPackageName; private final PackageManager mPackageManager; private final PackageManager mPackageManager; private final Object mLock = new Object(); private final Object mLock = new Object(); private final Object mDeviceConfigLock = new Object(); private ContentResolver mContentResolver; private ContentResolver mContentResolver; private long mGameDriverVersionCode; private long mGameDriverVersionCode; private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; private DeviceConfigListener mDeviceConfigListener; @GuardedBy("mLock") @GuardedBy("mLock") private Blacklists mBlacklists; private Blacklists mBlacklists; Loading Loading @@ -101,10 +104,11 @@ public class GpuService extends SystemService { public void onBootPhase(int phase) { public void onBootPhase(int phase) { if (phase == PHASE_BOOT_COMPLETED) { if (phase == PHASE_BOOT_COMPLETED) { mContentResolver = mContext.getContentResolver(); mContentResolver = mContext.getContentResolver(); mSettingsObserver = new SettingsObserver(); if (mDriverPackageName == null || mDriverPackageName.isEmpty()) { if (mDriverPackageName == null || mDriverPackageName.isEmpty()) { return; return; } } mSettingsObserver = new SettingsObserver(); mDeviceConfigListener = new DeviceConfigListener(); fetchGameDriverPackageProperties(); fetchGameDriverPackageProperties(); processBlacklists(); processBlacklists(); setBlacklist(); setBlacklist(); Loading Loading @@ -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 { private final class PackageReceiver extends BroadcastReceiver { @Override @Override public void onReceive(@NonNull final Context context, @NonNull final Intent intent) { public void onReceive(@NonNull final Context context, @NonNull final Intent intent) { Loading Loading @@ -229,13 +251,17 @@ public class GpuService extends SystemService { } } private void processBlacklists() { private void processBlacklists() { // TODO(b/121350991) Switch to DeviceConfig with property listener. String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER, String base64String = Settings.Global.GAME_DRIVER_BLACKLISTS); Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS); if (base64String == null) { if (base64String == null || base64String.isEmpty()) { base64String = return; Settings.Global.getString(mContentResolver, Settings.Global.GAME_DRIVER_BLACKLISTS); } parseBlacklists(base64String != null ? base64String : ""); } } private void parseBlacklists(String base64String) { synchronized (mLock) { synchronized (mLock) { // Reset all blacklists // Reset all blacklists mBlacklists = null; mBlacklists = null; Loading