Merge "Use volatile keyword instead of lock" into tm-dev

This commit is contained in:
Sally Yuen
2022-03-25 16:27:09 +00:00
committed by Android (Google) Code Review

View File

@@ -50,7 +50,7 @@ public class AccessibilityTraceManager implements AccessibilityTrace {
private final AccessibilityManagerService mService; private final AccessibilityManagerService mService;
private final Object mA11yMSLock; private final Object mA11yMSLock;
private long mEnabledLoggingFlags; private volatile long mEnabledLoggingFlags;
private static AccessibilityTraceManager sInstance = null; private static AccessibilityTraceManager sInstance = null;
@@ -77,34 +77,28 @@ public class AccessibilityTraceManager implements AccessibilityTrace {
@Override @Override
public boolean isA11yTracingEnabled() { public boolean isA11yTracingEnabled() {
synchronized (mA11yMSLock) { return mEnabledLoggingFlags != FLAGS_LOGGING_NONE;
return mEnabledLoggingFlags != FLAGS_LOGGING_NONE;
}
} }
@Override @Override
public boolean isA11yTracingEnabledForTypes(long typeIdFlags) { public boolean isA11yTracingEnabledForTypes(long typeIdFlags) {
synchronized (mA11yMSLock) { return ((typeIdFlags & mEnabledLoggingFlags) != FLAGS_LOGGING_NONE);
return ((typeIdFlags & mEnabledLoggingFlags) != FLAGS_LOGGING_NONE);
}
} }
@Override @Override
public int getTraceStateForAccessibilityManagerClientState() { public int getTraceStateForAccessibilityManagerClientState() {
int state = 0x0; int state = 0x0;
synchronized (mA11yMSLock) { if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CONNECTION)) {
if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CONNECTION)) { state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_ENABLED;
state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_ENABLED; }
} if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CONNECTION_CALLBACK)) {
if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CONNECTION_CALLBACK)) { state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_CB_ENABLED;
state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CONNECTION_CB_ENABLED; }
} if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CLIENT)) {
if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_INTERACTION_CLIENT)) { state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CLIENT_ENABLED;
state |= STATE_FLAG_TRACE_A11Y_INTERACTION_CLIENT_ENABLED; }
} if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_SERVICE)) {
if (isA11yTracingEnabledForTypes(FLAGS_ACCESSIBILITY_SERVICE)) { state |= STATE_FLAG_TRACE_A11Y_SERVICE_ENABLED;
state |= STATE_FLAG_TRACE_A11Y_SERVICE_ENABLED;
}
} }
return state; return state;
} }
@@ -116,11 +110,11 @@ public class AccessibilityTraceManager implements AccessibilityTrace {
return; return;
} }
synchronized (mA11yMSLock) { long oldEnabled = mEnabledLoggingFlags;
long oldEnabled = mEnabledLoggingFlags; mEnabledLoggingFlags = loggingTypes;
mEnabledLoggingFlags = loggingTypes;
if (needToNotifyClients(oldEnabled)) { if (needToNotifyClients(oldEnabled)) {
synchronized (mA11yMSLock) {
mService.scheduleUpdateClientsIfNeededLocked(mService.getCurrentUserState()); mService.scheduleUpdateClientsIfNeededLocked(mService.getCurrentUserState());
} }
} }
@@ -130,14 +124,14 @@ public class AccessibilityTraceManager implements AccessibilityTrace {
@Override @Override
public void stopTrace() { public void stopTrace() {
boolean stop = false; boolean stop;
synchronized (mA11yMSLock) { stop = isA11yTracingEnabled();
stop = isA11yTracingEnabled();
long oldEnabled = mEnabledLoggingFlags; long oldEnabled = mEnabledLoggingFlags;
mEnabledLoggingFlags = FLAGS_LOGGING_NONE; mEnabledLoggingFlags = FLAGS_LOGGING_NONE;
if (needToNotifyClients(oldEnabled)) { if (needToNotifyClients(oldEnabled)) {
synchronized (mA11yMSLock) {
mService.scheduleUpdateClientsIfNeededLocked(mService.getCurrentUserState()); mService.scheduleUpdateClientsIfNeededLocked(mService.getCurrentUserState());
} }
} }