This code does not work as expected in X11, since the GdkDevice
that GTK gives us is the Virtual core pointer, and not the hardware
device that is driving it at the moment.
Since there's no way to ask for this information to GTK4, query
XI2 indirectly about it, by checking the source device that the
Virtual core pointer inherited its XIValuatorClass classes from
(e.g. pressure), then querying that source device /dev node path.
The add_device() check for g_udev_device_get_parent() was leaking (see
below). As this is actually used in create_device(), I'm passing it as
argument to avoid a second call to that function.
> 34,175 (1,080 direct, 33,095 indirect) bytes in 27 blocks are definitely lost in loss record 19,729 of 19,758
> at 0x4A7A337: g_type_create_instance (gtype.c:1907)
> by 0x4A61CAC: g_object_new_internal (gobject.c:1945)
> by 0x4A62C7C: g_object_new_with_properties (gobject.c:2114)
> by 0x4A63780: g_object_new (gobject.c:1785)
> by 0x5EA5A6A: _g_udev_device_new (gudevdevice.c:132)
> by 0x4B6D24: add_device (gsd-device-manager.c:447)
> by 0x4B6FBF: gsd_device_manager_init (gsd-device-manager.c:517)
> by 0x4A7A288: g_type_create_instance (gtype.c:1929)
> by 0x4A61CAC: g_object_new_internal (gobject.c:1945)
> by 0x4A62C7C: g_object_new_with_properties (gobject.c:2114)
> by 0x4A63780: g_object_new (gobject.c:1785)
> by 0x4B7075: gsd_device_manager_get (gsd-device-manager.c:533)
This is only the bare minimum to make everything under panels/common
build. Since these widgets are used by the main window, port them
first.
CcTimeEntry was particularly hard to port. That's because GtkEntry
is a final class now. Overall, though, I'm happy with how it turned
out to be - much cleaner, less code, more obvious.
Drop the subtypes, and keep a single udev-based GsdDeviceManager,
which will work on both backends, and should work on all platforms
we care about (?).
Now that we have tablet support in wayland, we can kind of honor
that in the places we're interested. The inverse (looking up the
GdkDevices that a single GsdDevice represents) is unneeded.
GsdWacomDevice has been updated, dragging GsdDeviceManager as a dependency
from g-s-d, which has been added to panels/common, and compiled as a
separate static libary, which is used by the wacom and mouse modules.
gsd-input-helper.[ch] is now in such library and has been removed from
the panel directories.
https://bugzilla.gnome.org/show_bug.cgi?id=743196