diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/InputEventReceiver.java | 7 | ||||
| -rw-r--r-- | core/java/android/view/InputEventSender.java | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java index 117c101..f5ee7ed 100644 --- a/core/java/android/view/InputEventReceiver.java +++ b/core/java/android/view/InputEventReceiver.java @@ -23,6 +23,8 @@ import android.os.MessageQueue; import android.util.Log; import android.util.SparseIntArray; +import java.lang.ref.WeakReference; + /** * Provides a low-level mechanism for an application to receive input events. * @hide @@ -42,7 +44,7 @@ public abstract class InputEventReceiver { // Map from InputEvent sequence numbers to dispatcher sequence numbers. private final SparseIntArray mSeqMap = new SparseIntArray(); - private static native int nativeInit(InputEventReceiver receiver, + private static native int nativeInit(WeakReference<InputEventReceiver> receiver, InputChannel inputChannel, MessageQueue messageQueue); private static native void nativeDispose(int receiverPtr); private static native void nativeFinishInputEvent(int receiverPtr, int seq, boolean handled); @@ -65,7 +67,8 @@ public abstract class InputEventReceiver { mInputChannel = inputChannel; mMessageQueue = looper.getQueue(); - mReceiverPtr = nativeInit(this, inputChannel, mMessageQueue); + mReceiverPtr = nativeInit(new WeakReference<InputEventReceiver>(this), + inputChannel, mMessageQueue); mCloseGuard.open("dispose"); } diff --git a/core/java/android/view/InputEventSender.java b/core/java/android/view/InputEventSender.java index adf63fe..be6a623 100644 --- a/core/java/android/view/InputEventSender.java +++ b/core/java/android/view/InputEventSender.java @@ -22,6 +22,8 @@ import android.os.Looper; import android.os.MessageQueue; import android.util.Log; +import java.lang.ref.WeakReference; + /** * Provides a low-level mechanism for an application to send input events. * @hide @@ -38,7 +40,7 @@ public abstract class InputEventSender { private InputChannel mInputChannel; private MessageQueue mMessageQueue; - private static native int nativeInit(InputEventSender sender, + private static native int nativeInit(WeakReference<InputEventSender> sender, InputChannel inputChannel, MessageQueue messageQueue); private static native void nativeDispose(int senderPtr); private static native boolean nativeSendKeyEvent(int senderPtr, int seq, KeyEvent event); @@ -60,7 +62,8 @@ public abstract class InputEventSender { mInputChannel = inputChannel; mMessageQueue = looper.getQueue(); - mSenderPtr = nativeInit(this, inputChannel, mMessageQueue); + mSenderPtr = nativeInit(new WeakReference<InputEventSender>(this), + inputChannel, mMessageQueue); mCloseGuard.open("dispose"); } |
