146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown/*
246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Copyright (C) 2010 The Android Open Source Project
346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * you may not use this file except in compliance with the License.
646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * You may obtain a copy of the License at
746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown *
1046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Unless required by applicable law or agreed to in writing, software
1146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
1246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * See the License for the specific language governing permissions and
1446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * limitations under the License.
1546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown */
1646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
1746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#ifndef _ANDROID_VIEW_INPUTCHANNEL_H
1846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#define _ANDROID_VIEW_INPUTCHANNEL_H
1946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#include "jni.h"
2146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
229d3b1a424c5c61e24e9659d15fb353026a00d925Jeff Brown#include <input/InputTransport.h>
2346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
24a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornnamespace android {
2546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Browntypedef void (*InputChannelObjDisposeCallback)(JNIEnv* env, jobject inputChannelObj,
2746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown        const sp<InputChannel>& inputChannel, void* data);
2846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
2946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownextern sp<InputChannel> android_view_InputChannel_getInputChannel(JNIEnv* env,
3046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown        jobject inputChannelObj);
3146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
3246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown/* Sets a callback that is invoked when the InputChannel DVM object is disposed (or finalized).
3346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * This is used to automatically dispose of other native objects in the input dispatcher
3446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * and input queue to prevent memory leaks. */
3546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brownextern void android_view_InputChannel_setDisposeCallback(JNIEnv* env, jobject inputChannelObj,
3646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown        InputChannelObjDisposeCallback callback, void* data = NULL);
3746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
3846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown} // namespace android
3946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown
4046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown#endif // _ANDROID_OS_INPUTCHANNEL_H
41