RFR: 8320965: Scrolling on a touch enabled display fails on Wayland
Kevin Rushforth
kcr at openjdk.org
Thu Dec 14 17:12:57 UTC 2023
On Tue, 12 Dec 2023 11:19:23 GMT, Jose Pereda <jpereda at openjdk.org> wrote:
> This PR replaces the deprecated `gdk_pointer_grab` with `gdk_seat_grab`, and `gdk_pointer_ungrab ` with `gdk_seat_ungrab`, using runtime checks and wrapped functions for GTK 3.20+ (so systems without it still run with GTK 3.8+), and fixes the dragging issue on Wayland.
We want the ability to build this on a system that may or may not have GTK 3.20, and then to have the binary produced by the build be able to run on a system that may or may not have GTK 3.20, using the new function if available.
This means that there should not be any compile-time `#if` checks. All checks should be runtime checks, for example, checking whether or not the function pointer obtained via dlsym is NULL vs non-NULL.
I think you already have the needed runtime checks. I was able to compile your PR branch, using headers and libraries from GTK > 3.20, and run it on a system with GTK < 3.20. I confirmed that the dlsym returned NULL on that system (as expected), and it didn't crash.
So it might be as simple as removing the `#if` checks along with the entire "else" blocks, letting the code currently in the `#if` checks be unconditionally compiled. As long as you aren't using anything from a system GTK header file that doesn't exist in 3.8, this should be fine.
modules/javafx.graphics/src/main/native-glass/gtk/glass_general.cpp line 599:
> 597: return TRUE;
> 598: }
> 599: #if GTK_CHECK_VERSION(3, 20, 0)
I wouldn't have expected any compile-time `#if` checks as part of this PR.
-------------
PR Review: https://git.openjdk.org/jfx/pull/1305#pullrequestreview-1782152507
PR Review Comment: https://git.openjdk.org/jfx/pull/1305#discussion_r1426923806
More information about the openjfx-dev
mailing list