From 3d822cda1e46c5e928152e4d4f7d9d47676bb5e4 Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Wed, 19 Jan 2011 20:35:47 -0800 Subject: [PATCH] Fix getSwitchState. InputReader::getSwitchState always returns AKEY_STATE_UNKNOWN because SwitchInputMapper::getSources() returns 0 which cannot match any source mask including AINPUT_SOURCE_ANY. As a result initial lid switch detection is broken. This change adds a new source constant AINPUT_SOURCE_SWITCH that indicates that the source has switches. Change-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b --- include/ui/Input.h | 9 +++++++++ libs/ui/InputReader.cpp | 2 +- libs/ui/tests/InputReader_test.cpp | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/ui/Input.h b/include/ui/Input.h index 8c6018bfeeb2d..4e809d6a82d63 100644 --- a/include/ui/Input.h +++ b/include/ui/Input.h @@ -38,6 +38,15 @@ enum { AKEY_EVENT_FLAG_START_TRACKING = 0x40000000 }; +enum { + /* + * Indicates that an input device has switches. + * This input source flag is hidden from the API because switches are only used by the system + * and applications have no way to interact with them. + */ + AINPUT_SOURCE_SWITCH = 0x80000000, +}; + /* * Maximum number of pointers supported per motion event. * Smallest number of pointers is 1. diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp index 3197ab229ad71..8000b2dfc8739 100644 --- a/libs/ui/InputReader.cpp +++ b/libs/ui/InputReader.cpp @@ -806,7 +806,7 @@ SwitchInputMapper::~SwitchInputMapper() { } uint32_t SwitchInputMapper::getSources() { - return 0; + return AINPUT_SOURCE_SWITCH; } void SwitchInputMapper::process(const RawEvent* rawEvent) { diff --git a/libs/ui/tests/InputReader_test.cpp b/libs/ui/tests/InputReader_test.cpp index de4b05ae3d3df..c53d9c02e0f6b 100644 --- a/libs/ui/tests/InputReader_test.cpp +++ b/libs/ui/tests/InputReader_test.cpp @@ -1356,7 +1356,7 @@ TEST_F(SwitchInputMapperTest, GetSources) { SwitchInputMapper* mapper = new SwitchInputMapper(mDevice); addMapperAndConfigure(mapper); - ASSERT_EQ(uint32_t(0), mapper->getSources()); + ASSERT_EQ(uint32_t(AINPUT_SOURCE_SWITCH), mapper->getSources()); } TEST_F(SwitchInputMapperTest, GetSwitchState) {