Skip to content
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

Stickzone efficiency #22

Open
wants to merge 13 commits into
base: develop
Choose a base branch
from
Open

Conversation

tmackay
Copy link

@tmackay tmackay commented Sep 18, 2020

Improves stickzone efficiency and reliability by limiting maximum sampling frequency and performing coordinate transformation of zone in advance. Does not take into consideration centre or bounds calibration which add little value. Is this worth re-implementing?
fixes #21

Merge pull request khampf#18 from tmackay/master
previous logic does not check if previously active before resending press event every poll
also uses unnecessary local variable and multiple unnecessary assignments every poll
seems much snappier now (or just me?)
Expensive coordinate transform was being performed on every poll, instead use pre-calculated zones, however calibration is no longer effective.
This actually increased CPU from 3-4% to 7% due to being able to read more samples so a delay was added to the main loop to limit stick polling frequency, dropping CPU utilization to 0.7% during rapid stick movement.
50Hz was slightly noticeable
Doesn't seem necessary for keys, but mouse buttons don't work unless we sync between press and release events.
Applies to keydown/keyup bindings.
failed to pull before making local changes
Blocking read of USB events times out after 100ms - only sleep after an event was received to prevent "windows" of unnecessary delay after each timeout.
Added constants for G13_KEY_READ_TIMEOUT (100ms) and G13_KEY_READ_MIN_TIME (10ms) for USB blocking read timeout and minimum time between event parsing respectively.
same logic, less code
Set G13_KEY_READ_MIN_TIME to non-zero value, eg. 10 (milliseconds) to reduce CPU utilization by skipping stick samples.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant