X11 pen detection: fix misclassification due to improper init #2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
xinput2_device_is_pen() was testing against default-zero values in the X11 selector cache on at least the first round of detections, leading to imprecise detection.
Description
The patch fixes two aspects of initialisation:
Ensure that the selector cache is always initialised before any calls to xinput2_device_is_pen() by adding a call to pen_atoms_ensure_initialized() into X11_InitPen(). That new call also control-dominates all of the other calls to
pen_atoms_ensure_initialized(), so they are no longer needed.
Ensure that all X11 Atoms used in SDL_x11pen.c are instantiated if missing. This ensures that they are never
Noneand avoids potential failures to detect hot-plugged tablet devices.Existing Issue(s)
Might fix libsdl-org#8611