From c321c19fc91bfec9a74039ed4d37b815dd4ef379 Mon Sep 17 00:00:00 2001 From: Svetoslav Ganov Date: Fri, 3 Jun 2011 19:43:23 -0700 Subject: Fixing a bug I introduced during my last merge. Change-Id: I6474ca94a6ef9bd17a5670a4baa51673f3c2f5d0 --- .../accessibility/AccessibilityManagerService.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'services') diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 7801aecf444c..fba293cd52d3 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -259,7 +259,6 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub unbindAllServicesLocked(); } updateClientsLocked(); - updateInputFilterLocked(); } } }); @@ -319,6 +318,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub public List getEnabledAccessibilityServiceList(int feedbackType) { List result = mEnabledServicesForFeedbackTempList; + result.clear(); List services = mServices; synchronized (mLock) { while (feedbackType != 0) { @@ -327,7 +327,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub final int serviceCount = services.size(); for (int i = 0; i < serviceCount; i++) { Service service = services.get(i); - if (service.mFeedbackType == feedbackType) { + if ((service.mFeedbackType & feedbackTypeBit) != 0) { result.add(service.mAccessibilityServiceInfo); } } @@ -368,10 +368,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub service.setAccessibilityServiceInfo(oldInfo); } else { service.setAccessibilityServiceInfo(info); - tryAddServiceLocked(service); } - - updateInputFilterLocked(); } return; default: @@ -772,6 +769,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub } mNotificationTimeout = info.notificationTimeout; mIsDefault = (info.flags & AccessibilityServiceInfo.DEFAULT) != 0; + + synchronized (mLock) { + tryAddServiceLocked(this); + } } /** @@ -794,7 +795,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub */ public boolean unbind() { if (mService != null) { - tryRemoveServiceLocked(this); + synchronized (mLock) { + tryRemoveServiceLocked(this); + } mContext.unbindService(this); mService = null; return true; @@ -809,7 +812,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub * @return True if the service is configured, false otherwise. */ public boolean isConfigured() { - return (mEventTypes != 0 && mFeedbackType != 0); + return (mEventTypes != 0 && mFeedbackType != 0 && mService != null); } public void setServiceInfo(AccessibilityServiceInfo info) { -- cgit v1.2.3-59-g8ed1b