Implement native key pre-dispatching to IMEs.

This significantly re-works the native key dispatching code to
allow events to be pre-dispatched to the current IME before
being processed by native code.  It introduces one new public
API, which must be called after retrieving an event if the app
wishes for it to be pre-dispatched.

Currently the native code will only do pre-dispatching of
system keys, to avoid significant overhead for gaming input.
This should be improved to be smarted, filtering for only
keys that the IME is interested in.  Unfortunately IMEs don't
currently provide this information. :p

Change-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f
This commit is contained in:
Dianne Hackborn 2010-07-15 17:44:53 -07:00
parent 5c1ed84a2d
commit 0e8852766d
2 changed files with 19 additions and 0 deletions

View File

@ -152,6 +152,7 @@ public:
protected:
void initialize(int32_t deviceId, int32_t source);
void initialize(const InputEvent& from);
private:
int32_t mDeviceId;
@ -202,6 +203,7 @@ public:
int32_t repeatCount,
nsecs_t downTime,
nsecs_t eventTime);
void initialize(const KeyEvent& from);
private:
int32_t mAction;

View File

@ -18,6 +18,11 @@ void InputEvent::initialize(int32_t deviceId, int32_t source) {
mSource = source;
}
void InputEvent::initialize(const InputEvent& from) {
mDeviceId = from.mDeviceId;
mSource = from.mSource;
}
// class KeyEvent
bool KeyEvent::hasDefaultAction(int32_t keyCode) {
@ -106,6 +111,18 @@ void KeyEvent::initialize(
mEventTime = eventTime;
}
void KeyEvent::initialize(const KeyEvent& from) {
InputEvent::initialize(from);
mAction = from.mAction;
mFlags = from.mFlags;
mKeyCode = from.mKeyCode;
mScanCode = from.mScanCode;
mMetaState = from.mMetaState;
mRepeatCount = from.mRepeatCount;
mDownTime = from.mDownTime;
mEventTime = from.mEventTime;
}
// class MotionEvent
void MotionEvent::initialize(