Bug 473047 - Tablet protocol implementation not always generating a proximity_in event when near opengl* window
Summary: Tablet protocol implementation not always generating a proximity_in event whe...
Status: RESOLVED WORKSFORME
Alias: None
Product: kwin
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-05 15:45 UTC by ianwoodformal
Modified: 2023-09-29 03:46 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ianwoodformal 2023-08-05 15:45:16 UTC
SUMMARY

If a pen comes close to the screen on an opengl* window, and is then hovered onto a new window, no "proximity_in" event is generated for that new window.

STEPS TO REPRODUCE
1. Clone `https://github.com/0x182d4454fb211940/winit.git`
2. Switch to `proximity-test` branch. (Alternatively, use something that can directly print the tablet events. This is just a stripped-down version of where I noticed the bug.)
3. Run `cargo run --example proximity_test`
4. Bring the pen close to the screen, such that the pointer is inside the window that just opened. Take the pen away from the screen.
5. Bring the pen close to the screen, such that the pointer is inside an opengl* window. Move the pen onto the window spawned by cargo (so the pointer jumps directly from the opengl window to the new window), without touching the screen, and while maintaining pointer hover. Take the pen away.
6. Observe the output.

OBSERVED RESULT

proximity event: ProximityIn { /* snip */ }
proximity event: ProximityOut
proximity event: ProximityOut

EXPECTED RESULT

proximity event: ProximityIn { /* snip */ }
proximity event: ProximityOut
proximity event: ProximityIn { /* snip */ }
proximity event: ProximityOut

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 6.4.7-arch1-3 (64-bit)
(available in About System)
KDE Plasma Version: 5.27.7
KDE Frameworks Version: 5.108.0
Qt Version: 5.15.10

ADDITIONAL INFORMATION
My implementation here is very rough and could somehow be the source of the error. However gnome exhibits what I expect to be the correct behaviour.

* OpenGL is my guess. I originally noticed this with kitty, which I believe uses opengl, and I tried with glxgears and that also reproduced the bug. Moving the pen pointer from firefox or the desktop correctly produced proximity_in events.
Comment 1 Aleix Pol 2023-08-05 22:28:33 UTC
That is on wayland, can you confirm?

It shoudn't make a difference whatever the client is implemented in.

A good way to confirm the issue, would be to provide the logs with WAYLAND_DEBUG=1 enabled and see that the proximity events get lost. If it came to it, providing a way to reproduce the problem with a piece of software that is readily available would also make it easier to fix and test.
Comment 2 ianwoodformal 2023-08-06 11:02:48 UTC
(In reply to Aleix Pol from comment #1)
> That is on wayland, can you confirm?
Yes

> A good way to confirm the issue, would be to provide the logs with
> WAYLAND_DEBUG=1 enabled and see that the proximity events get lost. If it
> came to it, providing a way to reproduce the problem with a piece of
> software that is readily available would also make it easier to fix and test.
I wasn't aware of that flag. `WAYLAND_DEBUG=1 systemsettings 2>&1 | grep "proximity_in\|proximity_out"` works well.

I'm wondering if actually it's do with some kind of "half-initialised" state with my pen. I'm also struggling to reproduce it: it does still happen, but it's hard to pin down whether it's opengl windows or any window or fullscreen windows because sometimes when I launch that command the proximity_in events are generated, sometimes they aren't, and sometimes by playing with the pen it will stop or start working (but I can't pin down what is causing that).

From the log:

[3584498.375] zwp_tablet_tool_v2@4278190081.proximity_in(1197, zwp_tablet_v2@4278190080, wl_surface@29)
[3584498.424] zwp_tablet_tool_v2@4278190081.proximity_in(1198, zwp_tablet_v2@4278190080, wl_surface@29)
...
[3585144.816] zwp_tablet_tool_v2@4278190081.proximity_out()
...
[3587967.804] zwp_tablet_tool_v2@4278190081.proximity_out()

I have the entire log file if that would be helpful, but I don't know how to upload it (pastebin?)
Comment 3 ianwoodformal 2023-08-06 11:06:14 UTC
I suppose it's notable that there are two proximity in events. Before I thought this was due to the pen vs eraser tool, but that doesn't make sense since it's the same tablet_tool object.
Comment 4 Zamundaaa 2023-08-30 13:12:55 UTC
Can't reproduce. Have you found a reliable way to reproduce it in the meantime?
Comment 5 Bug Janitor Service 2023-09-14 03:45:21 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 6 Bug Janitor Service 2023-09-29 03:46:28 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!