Fix undetected CIDs

master
pixl 4 years ago
parent 0f60c3896c
commit a2718d9023
No known key found for this signature in database
GPG Key ID: 1866C148CD593B6E
  1. 27
      src/logid/backend/hidpp20/features/ReprogControls.cpp
  2. 2
      src/logid/backend/hidpp20/features/ReprogControls.h
  3. 1
      src/logid/features/RemapButton.cpp

@ -79,20 +79,23 @@ ReprogControls::ControlInfo ReprogControls::getControlInfo(uint8_t index)
return info;
}
ReprogControls::ControlInfo ReprogControls::getControlIdInfo(uint16_t cid)
void ReprogControls::initCidMap()
{
if(!_cids_initialized) {
std::unique_lock<std::mutex> lock(_cids_populating);
if(!_cids_initialized) {
uint8_t controls = getControlCount();
for(uint8_t i = 0; i < controls; i++) {
auto info = getControlInfo(i);
_cids.emplace(info.controlID, info);
}
_cids_populating.unlock();
_cids_initialized = true;
}
std::unique_lock<std::mutex> lock(_cids_populating);
if(_cids_initialized)
return;
uint8_t controls = getControlCount();
for(uint8_t i = 0; i < controls; i++) {
auto info = getControlInfo(i);
_cids.emplace(info.controlID, info);
}
_cids_initialized = true;
}
ReprogControls::ControlInfo ReprogControls::getControlIdInfo(uint16_t cid)
{
if(!_cids_initialized)
initCidMap();
auto it = _cids.find(cid);
if(it == _cids.end())

@ -95,6 +95,8 @@ namespace hidpp20
virtual ControlInfo getControlIdInfo(uint16_t cid);
virtual void initCidMap();
// Onlu controlId and flags will be set
virtual ControlInfo getControlReporting(uint16_t cid);

@ -32,6 +32,7 @@ using namespace logid::actions;
RemapButton::RemapButton(Device *dev): DeviceFeature(dev), _config (dev),
_reprog_controls (hidpp20::ReprogControls::autoVersion(&dev->hidpp20()))
{
_reprog_controls->initCidMap();
}
RemapButton::~RemapButton()

Loading…
Cancel
Save