summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/WindowManagerService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/WindowManagerService.java')
-rw-r--r--services/java/com/android/server/WindowManagerService.java41
1 files changed, 30 insertions, 11 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index 24caf1f..b90b03b 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -5478,7 +5478,7 @@ public class WindowManagerService extends IWindowManager.Stub
+ " fin=" + finished + " gfw=" + gotFirstWindow
+ " ed=" + eventDispatching + " tts=" + timeToSwitch
+ " wf=" + wasFrozen + " fp=" + focusPaused
- + " mcf=" + mCurrentFocus + "}}";
+ + " mcf=" + curFocus + "}}";
}
};
private DispatchState mDispatchState = null;
@@ -6435,18 +6435,30 @@ public class WindowManagerService extends IWindowManager.Stub
case RawInputEvent.CLASS_KEYBOARD:
KeyEvent ke = (KeyEvent)ev.event;
if (ke.isDown()) {
- lastKey = ke;
- downTime = curTime;
- keyRepeatCount = 0;
lastKeyTime = curTime;
- nextKeyTime = lastKeyTime
- + ViewConfiguration.getLongPressTimeout();
- if (DEBUG_INPUT) Log.v(
- TAG, "Received key down: first repeat @ "
- + nextKeyTime);
+ if (lastKey != null &&
+ ke.getKeyCode() == lastKey.getKeyCode()) {
+ keyRepeatCount++;
+ // Arbitrary long timeout to block
+ // repeating here since we know that
+ // the device driver takes care of it.
+ nextKeyTime = lastKeyTime + LONG_WAIT;
+ if (DEBUG_INPUT) Log.v(
+ TAG, "Received repeated key down");
+ } else {
+ downTime = curTime;
+ keyRepeatCount = 0;
+ nextKeyTime = lastKeyTime
+ + ViewConfiguration.getLongPressTimeout();
+ if (DEBUG_INPUT) Log.v(
+ TAG, "Received key down: first repeat @ "
+ + nextKeyTime);
+ }
+ lastKey = ke;
} else {
lastKey = null;
downTime = 0;
+ keyRepeatCount = 0;
// Arbitrary long timeout.
lastKeyTime = curTime;
nextKeyTime = curTime + LONG_WAIT;
@@ -6454,7 +6466,12 @@ public class WindowManagerService extends IWindowManager.Stub
TAG, "Received key up: ignore repeat @ "
+ nextKeyTime);
}
- dispatchKey((KeyEvent)ev.event, 0, 0);
+ if (keyRepeatCount > 0) {
+ dispatchKey(KeyEvent.changeTimeRepeat(ke,
+ ke.getEventTime(), keyRepeatCount), 0, 0);
+ } else {
+ dispatchKey(ke, 0, 0);
+ }
mQueue.recycleEvent(ev);
break;
case RawInputEvent.CLASS_TOUCHSCREEN:
@@ -8520,7 +8537,8 @@ public class WindowManagerService extends IWindowManager.Stub
final int N = allAppWindows.size();
for (int i=0; i<N; i++) {
WindowState win = allAppWindows.get(i);
- if (win == startingWindow || win.mAppFreezing) {
+ if (win == startingWindow || win.mAppFreezing
+ || win.mAttrs.type == TYPE_APPLICATION_STARTING) {
continue;
}
if (DEBUG_VISIBILITY) {
@@ -10985,6 +11003,7 @@ public class WindowManagerService extends IWindowManager.Stub
try {
mDimSurface = new Surface(session, 0, -1, 16, 16, PixelFormat.OPAQUE,
Surface.FX_SURFACE_DIM);
+ mDimSurface.setAlpha(0.0f);
} catch (Exception e) {
Log.e(TAG, "Exception creating Dim surface", e);
}