diff options
Diffstat (limited to 'libs/input/IInputFlinger.cpp')
-rw-r--r-- | libs/input/IInputFlinger.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libs/input/IInputFlinger.cpp b/libs/input/IInputFlinger.cpp index 47a2c0c347..477e54e708 100644 --- a/libs/input/IInputFlinger.cpp +++ b/libs/input/IInputFlinger.cpp @@ -40,6 +40,20 @@ public: } remote()->transact(BnInputFlinger::SET_INPUT_WINDOWS_TRANSACTION, data, &reply); } + + virtual void registerInputChannel(const sp<InputChannel>& channel) { + Parcel data, reply; + data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor()); + channel->write(data); + remote()->transact(BnInputFlinger::REGISTER_INPUT_CHANNEL_TRANSACTION, data, &reply); + } + + virtual void unregisterInputChannel(const sp<InputChannel>& channel) { + Parcel data, reply; + data.writeInterfaceToken(IInputFlinger::getInterfaceDescriptor()); + channel->write(data); + remote()->transact(BnInputFlinger::UNREGISTER_INPUT_CHANNEL_TRANSACTION, data, &reply); + } }; IMPLEMENT_META_INTERFACE(InputFlinger, "android.input.IInputFlinger"); @@ -61,6 +75,20 @@ status_t BnInputFlinger::onTransact( setInputWindows(handles); break; } + case REGISTER_INPUT_CHANNEL_TRANSACTION: { + CHECK_INTERFACE(IInputFlinger, data, reply); + sp<InputChannel> channel = new InputChannel(); + channel->read(data); + registerInputChannel(channel); + break; + } + case UNREGISTER_INPUT_CHANNEL_TRANSACTION: { + CHECK_INTERFACE(IInputFlinger, data, reply); + sp<InputChannel> channel = new InputChannel(); + channel->read(data); + unregisterInputChannel(channel); + break; + } default: return BBinder::onTransact(code, data, reply, flags); } |