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

Commit e042a3fe authored by Julia Reynolds's avatar Julia Reynolds Committed by android-build-merger
Browse files

Merge "Don\'t call into audiomanager holding a zen lock." into nyc-dev

am: d0f2d1f9

* commit 'd0f2d1f9':
  Don't call into audiomanager holding a zen lock.

Change-Id: Ic6c48dbce9c7fa5bfb71cd253d2ca7fde4749912
parents aa9e0344 d0f2d1f9
Loading
Loading
Loading
Loading
+29 −7
Original line number Diff line number Diff line
@@ -643,16 +643,20 @@ public class ZenModeHelper {
                dispatchOnPolicyChanged();
            }
            mConfig = config;
            mHandler.postApplyConfig(config, reason, setRingerMode);
            return true;
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    private void applyConfig(ZenModeConfig config, String reason, boolean setRingerMode) {
        final String val = Integer.toString(config.hashCode());
        Global.putString(mContext.getContentResolver(), Global.ZEN_MODE_CONFIG_ETAG, val);
        if (!evaluateZenMode(reason, setRingerMode)) {
            applyRestrictions();  // evaluateZenMode will also apply restrictions if changed
        }
        mConditions.evaluateConfig(config, true /*processSubscriptions*/);
            return true;
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    private int getZenModeSetting() {
@@ -1071,14 +1075,23 @@ public class ZenModeHelper {
        private static final int MSG_DISPATCH = 1;
        private static final int MSG_METRICS = 2;
        private static final int MSG_SET_CONFIG = 3;
        private static final int MSG_APPLY_CONFIG = 4;

        private final class ConfigMessageData {
            public final ZenModeConfig config;
            public final String reason;
            public final boolean setRingerMode;

            ConfigMessageData(ZenModeConfig config, String reason) {
                this.config = config;
                this.reason = reason;
                this.setRingerMode = false;
            }

            ConfigMessageData(ZenModeConfig config, String reason, boolean setRingerMode) {
                this.config = config;
                this.reason = reason;
                this.setRingerMode = setRingerMode;
            }
        }

@@ -1102,6 +1115,11 @@ public class ZenModeHelper {
            sendMessage(obtainMessage(MSG_SET_CONFIG, new ConfigMessageData(config, reason)));
        }

        private void postApplyConfig(ZenModeConfig config, String reason, boolean setRingerMode) {
            sendMessage(obtainMessage(MSG_APPLY_CONFIG,
                    new ConfigMessageData(config, reason, setRingerMode)));
        }

        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
@@ -1117,6 +1135,10 @@ public class ZenModeHelper {
                        setConfigLocked(configData.config, configData.reason);
                    }
                    break;
                case MSG_APPLY_CONFIG:
                    ConfigMessageData applyConfigData = (ConfigMessageData) msg.obj;
                    applyConfig(applyConfigData.config, applyConfigData.reason,
                            applyConfigData.setRingerMode);
            }
        }
    }