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
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -806,7 +806,7 @@ SwitchInputMapper::~SwitchInputMapper() {
|
||||
}
|
||||
|
||||
uint32_t SwitchInputMapper::getSources() {
|
||||
return 0;
|
||||
return AINPUT_SOURCE_SWITCH;
|
||||
}
|
||||
|
||||
void SwitchInputMapper::process(const RawEvent* rawEvent) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user