summaryrefslogtreecommitdiffstats
path: root/services/java
diff options
context:
space:
mode:
authorKhalid Zubair <kzubair@cyngn.com>2015-11-30 18:29:29 -0800
committerGerrit Code Review <gerrit@cyanogenmod.org>2015-12-01 12:39:56 -0800
commit055bf375987b6387a3afbda5a51bf6231e42aa32 (patch)
tree1e6ba044f4340ddcd91831f15ac79878964a840b /services/java
parent9b446034d3d6ff09402f6593fc8506999546daa4 (diff)
downloadframeworks_base-055bf375987b6387a3afbda5a51bf6231e42aa32.zip
frameworks_base-055bf375987b6387a3afbda5a51bf6231e42aa32.tar.gz
frameworks_base-055bf375987b6387a3afbda5a51bf6231e42aa32.tar.bz2
gesture: fix possible race during initialization
It's possible for binder events to fire before mDisplayObserver is setup. Take mLock during the setup phase to prevent access to mDisplayObserver until setup completes. SAMBAR-1121 Change-Id: I8c137ead7d0f956faca134be565b6db1da680f76
Diffstat (limited to 'services/java')
-rw-r--r--services/java/com/android/server/gesture/EdgeGestureService.java28
1 files changed, 15 insertions, 13 deletions
diff --git a/services/java/com/android/server/gesture/EdgeGestureService.java b/services/java/com/android/server/gesture/EdgeGestureService.java
index c023294..0581831 100644
--- a/services/java/com/android/server/gesture/EdgeGestureService.java
+++ b/services/java/com/android/server/gesture/EdgeGestureService.java
@@ -185,19 +185,21 @@ public class EdgeGestureService extends IEdgeGestureService.Stub {
public void systemReady() {
if (DEBUG) Slog.d(TAG, "Starting the edge gesture capture thread ...");
- mHandlerThread.start();
- mHandler = new H(mHandlerThread.getLooper());
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- android.os.Process.setThreadPriority(
- android.os.Process.THREAD_PRIORITY_FOREGROUND);
- android.os.Process.setCanSelfBackground(false);
- }
- });
- mDisplayObserver = new DisplayObserver(mContext, mHandler);
- // check if anyone registered during startup
- mHandler.sendEmptyMessage(MSG_UPDATE_SERVICE);
+ synchronized (mLock) {
+ mHandlerThread.start();
+ mHandler = new H(mHandlerThread.getLooper());
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ android.os.Process.setThreadPriority(
+ android.os.Process.THREAD_PRIORITY_FOREGROUND);
+ android.os.Process.setCanSelfBackground(false);
+ }
+ });
+ mDisplayObserver = new DisplayObserver(mContext, mHandler);
+ // check if anyone registered during startup
+ mHandler.sendEmptyMessage(MSG_UPDATE_SERVICE);
+ }
}