diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-06-22 01:27:15 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-06-28 19:10:54 -0700 |
commit | 50de30a5230dd15326f8bcbb4beaf617bca265e2 (patch) | |
tree | 08220f1667205b8ccd2891ab9eda6276c91571c7 /include | |
parent | a84687252b1d344f244bf93771d2acd7055d253e (diff) | |
download | frameworks_native-50de30a5230dd15326f8bcbb4beaf617bca265e2.zip frameworks_native-50de30a5230dd15326f8bcbb4beaf617bca265e2.tar.gz frameworks_native-50de30a5230dd15326f8bcbb4beaf617bca265e2.tar.bz2 |
Native input event dispatching.
Target identification is now fully native.
Fixed a couple of minor issues related to input injection.
Native input enabled by default, can be disabled by setting
WindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.
Change-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff
Diffstat (limited to 'include')
-rw-r--r-- | include/ui/Input.h | 3 | ||||
-rw-r--r-- | include/ui/InputDispatcher.h | 20 | ||||
-rw-r--r-- | include/ui/InputManager.h | 10 | ||||
-rw-r--r-- | include/ui/InputReader.h | 6 |
4 files changed, 34 insertions, 5 deletions
diff --git a/include/ui/Input.h b/include/ui/Input.h index 32f85b3..57b292b 100644 --- a/include/ui/Input.h +++ b/include/ui/Input.h @@ -87,6 +87,9 @@ enum { // Indicates that the screen was dim when the event was received and the event // should brighten the device. POLICY_FLAG_BRIGHT_HERE = 0x20000000, + + // Indicates that the dispatcher should call back into the policy before dispatching. */ + POLICY_FLAG_INTERCEPT_DISPATCH = 0x40000000, }; /* diff --git a/include/ui/InputDispatcher.h b/include/ui/InputDispatcher.h index 511ad20..eb8f820 100644 --- a/include/ui/InputDispatcher.h +++ b/include/ui/InputDispatcher.h @@ -126,21 +126,21 @@ public: /* Gets the key repeat timeout or -1 if automatic key repeating is disabled. */ virtual nsecs_t getKeyRepeatTimeout() = 0; - /* Gets the input targets for a key event. + /* Waits for key event input targets to become available. * If the event is being injected, injectorPid and injectorUid should specify the * process id and used id of the injecting application, otherwise they should both * be -1. * Returns one of the INPUT_EVENT_INJECTION_XXX constants. */ - virtual int32_t getKeyEventTargets(KeyEvent* keyEvent, uint32_t policyFlags, + virtual int32_t waitForKeyEventTargets(KeyEvent* keyEvent, uint32_t policyFlags, int32_t injectorPid, int32_t injectorUid, Vector<InputTarget>& outTargets) = 0; - /* Gets the input targets for a motion event. + /* Waits for motion event targets to become available. * If the event is being injected, injectorPid and injectorUid should specify the * process id and used id of the injecting application, otherwise they should both * be -1. * Returns one of the INPUT_EVENT_INJECTION_XXX constants. */ - virtual int32_t getMotionEventTargets(MotionEvent* motionEvent, uint32_t policyFlags, + virtual int32_t waitForMotionEventTargets(MotionEvent* motionEvent, uint32_t policyFlags, int32_t injectorPid, int32_t injectorUid, Vector<InputTarget>& outTargets) = 0; }; @@ -186,6 +186,16 @@ public: virtual int32_t injectInputEvent(const InputEvent* event, int32_t injectorPid, int32_t injectorUid, bool sync, int32_t timeoutMillis) = 0; + /* Preempts input dispatch in progress by making pending synchronous + * dispatches asynchronous instead. This method is generally called during a focus + * transition from one application to the next so as to enable the new application + * to start receiving input as soon as possible without having to wait for the + * old application to finish up. + * + * This method may be called on any thread (usually by the input manager). + */ + virtual void preemptInputDispatch() = 0; + /* Registers or unregister input channels that may be used as targets for input events. * * These methods may be called on any thread (usually by the input manager). @@ -233,6 +243,8 @@ public: virtual int32_t injectInputEvent(const InputEvent* event, int32_t injectorPid, int32_t injectorUid, bool sync, int32_t timeoutMillis); + virtual void preemptInputDispatch(); + virtual status_t registerInputChannel(const sp<InputChannel>& inputChannel); virtual status_t unregisterInputChannel(const sp<InputChannel>& inputChannel); diff --git a/include/ui/InputManager.h b/include/ui/InputManager.h index 7509dd2..e755238 100644 --- a/include/ui/InputManager.h +++ b/include/ui/InputManager.h @@ -87,6 +87,14 @@ public: virtual int32_t injectInputEvent(const InputEvent* event, int32_t injectorPid, int32_t injectorUid, bool sync, int32_t timeoutMillis) = 0; + /* Preempts input dispatch in progress by making pending synchronous + * dispatches asynchronous instead. This method is generally called during a focus + * transition from one application to the next so as to enable the new application + * to start receiving input as soon as possible without having to wait for the + * old application to finish up. + */ + virtual void preemptInputDispatch() = 0; + /* Gets input device configuration. */ virtual void getInputConfiguration(InputConfiguration* outConfiguration) const = 0; @@ -130,6 +138,8 @@ public: virtual int32_t injectInputEvent(const InputEvent* event, int32_t injectorPid, int32_t injectorUid, bool sync, int32_t timeoutMillis); + virtual void preemptInputDispatch(); + virtual void getInputConfiguration(InputConfiguration* outConfiguration) const; virtual int32_t getScanCodeState(int32_t deviceId, int32_t deviceClasses, int32_t scanCode) const; diff --git a/include/ui/InputReader.h b/include/ui/InputReader.h index d76b8fe..2093560 100644 --- a/include/ui/InputReader.h +++ b/include/ui/InputReader.h @@ -361,7 +361,11 @@ public: // The input dispatcher should add POLICY_FLAG_BRIGHT_HERE to the policy flags it // passes through the dispatch pipeline. - ACTION_BRIGHT_HERE = 0x00000008 + ACTION_BRIGHT_HERE = 0x00000008, + + // The input dispatcher should add POLICY_FLAG_INTERCEPT_DISPATCH to the policy flags + // it passed through the dispatch pipeline. + ACTION_INTERCEPT_DISPATCH = 0x00000010 }; /* Describes a virtual key. */ |