diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/private/ui/SharedState.h | 2 | ||||
| -rw-r--r-- | include/ui/EventHub.h | 5 | ||||
| -rw-r--r-- | include/utils/threads.h | 17 |
3 files changed, 23 insertions, 1 deletions
diff --git a/include/private/ui/SharedState.h b/include/private/ui/SharedState.h index 3bc7979ca810..c9f6b5edb9ab 100644 --- a/include/private/ui/SharedState.h +++ b/include/private/ui/SharedState.h @@ -98,6 +98,8 @@ struct layer_cblk_t // (128 bytes) struct per_client_cblk_t // 4KB max { + per_client_cblk_t() : lock(Mutex::SHARED) { } + Mutex lock; Condition cv; layer_cblk_t layers[NUM_LAYERS_MAX] __attribute__((aligned(32))); diff --git a/include/ui/EventHub.h b/include/ui/EventHub.h index e12c4f13ea0d..d9c0af211703 100644 --- a/include/ui/EventHub.h +++ b/include/ui/EventHub.h @@ -73,6 +73,9 @@ public: int getKeycodeState(int key) const; int getKeycodeState(int32_t deviceId, int key) const; + status_t scancodeToKeycode(int32_t deviceId, int scancode, + int32_t* outKeycode, uint32_t* outFlags) const; + // special type codes when devices are added/removed. enum { DEVICE_ADDED = 0x10000000, @@ -121,7 +124,7 @@ private: mutable Mutex mLock; bool mHaveFirstKeyboard; - int32_t mFirstKeyboardId; // the API is that the build in keyboard is id 0, so map it + int32_t mFirstKeyboardId; // the API is that the built-in keyboard is id 0, so map it struct device_ent { device_t* device; diff --git a/include/utils/threads.h b/include/utils/threads.h index 5c0396596074..e9b0788895e2 100644 --- a/include/utils/threads.h +++ b/include/utils/threads.h @@ -190,8 +190,14 @@ inline thread_id_t getThreadId() { */ class Mutex { public: + enum { + NORMAL = 0, + SHARED = 1 + }; + Mutex(); Mutex(const char* name); + Mutex(int type, const char* name = NULL); ~Mutex(); // lock or unlock the mutex @@ -235,6 +241,17 @@ inline Mutex::Mutex() { inline Mutex::Mutex(const char* name) { pthread_mutex_init(&mMutex, NULL); } +inline Mutex::Mutex(int type, const char* name) { + if (type == SHARED) { + pthread_mutexattr_t attr; + pthread_mutexattr_init(&attr); + pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); + pthread_mutex_init(&mMutex, &attr); + pthread_mutexattr_destroy(&attr); + } else { + pthread_mutex_init(&mMutex, NULL); + } +} inline Mutex::~Mutex() { pthread_mutex_destroy(&mMutex); } |