diff --git a/src/logid/Device.cpp b/src/logid/Device.cpp index 73ecfee..20b679d 100644 --- a/src/logid/Device.cpp +++ b/src/logid/Device.cpp @@ -184,7 +184,6 @@ void Device::sleep() { void Device::wakeup() { std::lock_guard lock(_state_lock); - logPrintf(INFO, "%s:%d woke up.", _path.c_str(), _index); reconfigure(); @@ -192,6 +191,8 @@ void Device::wakeup() { _awake = true; _ipc_interface->notifyStatus(); } + + logPrintf(INFO, "%s:%d woke up.", _path.c_str(), _index); } void Device::reconfigure() { diff --git a/src/logid/backend/hidpp10/ReceiverMonitor.cpp b/src/logid/backend/hidpp10/ReceiverMonitor.cpp index 9faef84..fe75a44 100644 --- a/src/logid/backend/hidpp10/ReceiverMonitor.cpp +++ b/src/logid/backend/hidpp10/ReceiverMonitor.cpp @@ -159,19 +159,25 @@ void ReceiverMonitor::enumerate() { void ReceiverMonitor::waitForDevice(hidpp::DeviceIndex index) { auto handler_id = std::make_shared>(); + auto executed = std::make_shared(false); *handler_id = _receiver->rawDevice()->addEventHandler( {[index](const std::vector& report) -> bool { return report[Offset::DeviceIndex] == index; }, - [self_weak = _self, index, handler_id]( + [self_weak = _self, index, handler_id, executed]( [[maybe_unused]] const std::vector& report) { + if (*executed) + return; + hidpp::DeviceConnectionEvent event{}; event.withPayload = false; event.linkEstablished = true; event.index = index; event.fromTimeoutCheck = true; + *executed = true; + run_task([self_weak, event, handler_id]() { *handler_id = {}; if (auto self = self_weak.lock()) { diff --git a/src/logid/features/RemapButton.cpp b/src/logid/features/RemapButton.cpp index d1f885e..0d6dd9a 100644 --- a/src/logid/features/RemapButton.cpp +++ b/src/logid/features/RemapButton.cpp @@ -63,7 +63,7 @@ RemapButton::RemapButton(Device* dev) : DeviceFeature(dev), if ((action->reprogFlags() & hidpp20::ReprogControls::RawXYDiverted) && (!_reprog_controls->supportsRawXY() || !(info.additionalFlags & hidpp20::ReprogControls::RawXY))) - logPrintf(WARN, "%s: Cannot divert raw XY movements for CID 0x%02x", + logPrintf(WARN, "%s: 'Cannot divert raw XY movements for CID 0x%02x", _device->name().c_str(), info.controlID); report.flags |= action->reprogFlags();