1928e054931d357326613c78e62f4d850b7c442ffJeff Brown/* 2928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Copyright (C) 2011 The Android Open Source Project 3928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 4928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 5928e054931d357326613c78e62f4d850b7c442ffJeff Brown * you may not use this file except in compliance with the License. 6928e054931d357326613c78e62f4d850b7c442ffJeff Brown * You may obtain a copy of the License at 7928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 8928e054931d357326613c78e62f4d850b7c442ffJeff Brown * http://www.apache.org/licenses/LICENSE-2.0 9928e054931d357326613c78e62f4d850b7c442ffJeff Brown * 10928e054931d357326613c78e62f4d850b7c442ffJeff Brown * Unless required by applicable law or agreed to in writing, software 11928e054931d357326613c78e62f4d850b7c442ffJeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 12928e054931d357326613c78e62f4d850b7c442ffJeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13928e054931d357326613c78e62f4d850b7c442ffJeff Brown * See the License for the specific language governing permissions and 14928e054931d357326613c78e62f4d850b7c442ffJeff Brown * limitations under the License. 15928e054931d357326613c78e62f4d850b7c442ffJeff Brown */ 16928e054931d357326613c78e62f4d850b7c442ffJeff Brown 17928e054931d357326613c78e62f4d850b7c442ffJeff Brown#ifndef _UI_INPUT_APPLICATION_H 18928e054931d357326613c78e62f4d850b7c442ffJeff Brown#define _UI_INPUT_APPLICATION_H 19928e054931d357326613c78e62f4d850b7c442ffJeff Brown 20b93a03f841d93498bfea6cc92a22faa34bce1337Mathias Agopian#include <androidfw/Input.h> 21928e054931d357326613c78e62f4d850b7c442ffJeff Brown 22928e054931d357326613c78e62f4d850b7c442ffJeff Brown#include <utils/RefBase.h> 23928e054931d357326613c78e62f4d850b7c442ffJeff Brown#include <utils/Timers.h> 24928e054931d357326613c78e62f4d850b7c442ffJeff Brown#include <utils/String8.h> 25928e054931d357326613c78e62f4d850b7c442ffJeff Brown 26928e054931d357326613c78e62f4d850b7c442ffJeff Brownnamespace android { 27928e054931d357326613c78e62f4d850b7c442ffJeff Brown 28928e054931d357326613c78e62f4d850b7c442ffJeff Brown/* 299302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * Describes the properties of an application that can receive input. 30cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown */ 31cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brownstruct InputApplicationInfo { 32cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown String8 name; 33cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown nsecs_t dispatchingTimeout; 34cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown}; 35cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 36cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 37cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown/* 38cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown * Handle for an application that can receive input. 399302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * 409302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * Used by the native input dispatcher as a handle for the window manager objects 41928e054931d357326613c78e62f4d850b7c442ffJeff Brown * that describe an application. 42928e054931d357326613c78e62f4d850b7c442ffJeff Brown */ 43928e054931d357326613c78e62f4d850b7c442ffJeff Brownclass InputApplicationHandle : public RefBase { 449302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brownpublic: 45cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown inline const InputApplicationInfo* getInfo() const { 46cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown return mInfo; 47cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } 48cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 49cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown inline String8 getName() const { 50cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown return mInfo ? mInfo->name : String8("<invalid>"); 51cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } 52cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 53cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown inline nsecs_t getDispatchingTimeout(nsecs_t defaultValue) const { 54cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown return mInfo ? mInfo->dispatchingTimeout : defaultValue; 55cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown } 569302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 579302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown /** 589302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * Requests that the state of this object be updated to reflect 599302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * the most current available information about the application. 609302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * 619302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * This method should only be called from within the input dispatcher's 629302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * critical section. 639302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * 649302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown * Returns true on success, or false if the handle is no longer valid. 659302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown */ 66cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown virtual bool updateInfo() = 0; 67cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 68cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown /** 69cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown * Releases the storage used by the associated information when it is 70cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown * no longer needed. 71cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown */ 72cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown void releaseInfo(); 739302c8796fc4dcda08d4bd1e11733848fd4fafafJeff Brown 74928e054931d357326613c78e62f4d850b7c442ffJeff Brownprotected: 75cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown InputApplicationHandle(); 76cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown virtual ~InputApplicationHandle(); 77cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown 78cc4f7db698f88b633a286d8ab1105b28a474cd09Jeff Brown InputApplicationInfo* mInfo; 79928e054931d357326613c78e62f4d850b7c442ffJeff Brown}; 80928e054931d357326613c78e62f4d850b7c442ffJeff Brown 81928e054931d357326613c78e62f4d850b7c442ffJeff Brown} // namespace android 82928e054931d357326613c78e62f4d850b7c442ffJeff Brown 83928e054931d357326613c78e62f4d850b7c442ffJeff Brown#endif // _UI_INPUT_APPLICATION_H 84