-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
consecutively sent HID output messages are skipped #10828
Comments
This has been confirmed by @fayaaz and another user on the forum. |
ping @JoergAtGithub |
I suppose that releasing the mutex in HidIoOutputReport::sendCachedData() could be the culprit. |
@Swiftb0y Please flag this issue as a critical bug. |
Untested hotfix for my guess: |
I'm currently away from my computer and writing from my phone, I can't look for this until Tuesday. |
I tested this and it does not fix the bug. |
The We probably need to introduce different buffering behavior for output reports. Reports might be discarded by default when a previous sent operation is still pending, but need to be buffered (FIFO) if requested by the caller. |
Instead of caching only a single output report a ring buffer should be used to enqueue incoming updates. A capacity of 1 then reflects the current behavior. |
This seems to be correct. Commenting out the sending of the initialization packets with 19560e2 from before #4585 was merged, turning the controller off and on again, then restarting Mixxx reproduces the bug. I'm not confident this is related to packets being sent at high frequencies. |
I'm working on a solution. As a bandaid, please add wait times of ~20ms at lines 1998 and 2015 to your mapping. |
Sending the second initialization packet on a 35 ms timer hacks around the problem. |
@JoergAtGithub have you had a chance to work on this? |
Any update on this? I have picked up the work from @Be-ing and it seems that this issue is making more than just one problem. |
I will work on a PR, which implements an alternate mode, for such non HID class compliant use. |
Thanks for the speedy feedback, will give it a spin as soon as you have it :) |
I've the code ready now, and will provide a PR this weekend! |
Awesome stuff! I don't think the S4 Mk3 PR will be merged by then, so should be able to undo the workaround and test with it |
HID output with my Kontrol S4 Mk3 mapping was broken by #4585. Initially, all duplicate HID output packets were not sent. That was fixed by #4692. However, there is still another critical bug. Sometimes, Mixxx will neither send the output packet for the right jog wheel motor nor the right jog wheel LEDs. When this happens, HID output for the separate packet controlling the buttons' LEDs continues to work, so the bug seems to be specific to the output packets that are continuously sent. This is not 100% reproducible, so I am guessing there's a race condition involved. In the meantime I've had to use a commit before #4585 was merged.
The text was updated successfully, but these errors were encountered: