forked from forks/qmk_firmware
Problem: `mousekey_task` spams empty hid reports with when a mouse key is pressed, causing resource exhaustion in the USB mouse endpoint. Cause: The check whether or not to send a new mouse report would always evaluate to true if a mouse key is pressed: 1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this fields. 2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields. 3. `has_mouse_report_changed` compares the two and evaluates to true 4. a mouse report is sent. Fix: The check condition of `has_mouse_report_changed` will evaluate any empty record as unchanged, as mouse report data is relative and doesn't need to return to zero. An empty report will still be send by `register_mouse` on release of all mouse buttons. |
||
|---|---|---|
| .. | ||
| arm_atsam | ||
| chibios | ||
| lufa | ||
| usb_hid | ||
| vusb | ||
| host.c | ||
| host.h | ||
| host_driver.h | ||
| report.c | ||
| report.h | ||
| usb_descriptor.c | ||
| usb_descriptor.h | ||
| usb_descriptor_common.h | ||
| usb_device_state.c | ||
| usb_device_state.h | ||
| usb_util.c | ||
| usb_util.h | ||