{"object_kind":"push","event_name":"push","before":"7e6a9f322f3a09f83c274c670c624cbe7076ad7b","after":"905b4c6a4cce6dce87bf9653b41d55923e03ab71","ref":"refs/heads/main","ref_protected":false,"checkout_sha":"905b4c6a4cce6dce87bf9653b41d55923e03ab71","message":null,"user_id":9716,"user_name":"Marge Bot","user_username":"marge-bot","user_email":"","user_avatar":"https://gitlab.freedesktop.org/uploads/-/system/user/avatar/9716/marge.png","project_id":147,"project":{"id":147,"name":"libinput","description":"Input device management and event handling library","web_url":"https://gitlab.freedesktop.org/libinput/libinput","avatar_url":null,"git_ssh_url":"git@ssh.gitlab.freedesktop.org:libinput/libinput.git","git_http_url":"https://gitlab.freedesktop.org/libinput/libinput.git","namespace":"libinput","visibility_level":20,"path_with_namespace":"libinput/libinput","default_branch":"main","ci_config_path":"","homepage":"https://gitlab.freedesktop.org/libinput/libinput","url":"git@ssh.gitlab.freedesktop.org:libinput/libinput.git","ssh_url":"git@ssh.gitlab.freedesktop.org:libinput/libinput.git","http_url":"https://gitlab.freedesktop.org/libinput/libinput.git"},"commits":[{"id":"3958ba44c2ce26373e88ea352a84e25a51868f5d","message":"Add an internal plugin system to libinput\n\nThis adds the scaffolding for an internal plugin architecture. No such\nplugin currently exists and any plugin implemented against this\narchitecture merely is plugin-like in the event flow, not actually\nexternal to libinput.\n\nThe goal of this architecture is to have more segmented processing\nof the event stream from devices to modify that stream before libinput\never sees it. Right now libinput looks at e.g. a tablet packet and then\ndetermines whether the tool was correctly in proximity, etc.\nWith this architecture we can have a plugin that modifies the event\nstream that the tool is *always* correctly in proximity and the tablet\nbackend itself merely needs to handle the correct case.\n\nThe event flow will thus logically change from:\n evdev device -> backend dispatch\nto\n evdev device -> plugin1 -> plugin2 -> backend dispatch\n\nThe plugin API is more expansive than we will use immediately, it is the\nresult of several different implementation branches that all require\ndifferent functionality.\n\nPart-of: \n","title":"Add an internal plugin system to libinput","timestamp":"2025-06-18T06:18:53+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/3958ba44c2ce26373e88ea352a84e25a51868f5d","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":["src/libinput-plugin-private.h","src/libinput-plugin-system.h","src/libinput-plugin.c","src/libinput-plugin.h"],"modified":["meson.build","src/evdev.c","src/libinput-private.h","src/libinput.c"],"removed":[]},{"id":"38d92a96b92c3faf02374e84c8f24828e7451075","message":"evdev: don't notify plugins about devices we will never add\n\nWe require ID_INPUT on any device we want to handle so let's filter any\ndevice that is missing that property before we notify the plugins.\n\nPart-of: \n","title":"evdev: don't notify plugins about devices we will never add","timestamp":"2025-06-18T06:18:53+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/38d92a96b92c3faf02374e84c8f24828e7451075","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":[],"modified":["src/evdev.c"],"removed":[]},{"id":"7137eb9702f103ac00a5b37fbea2641812211da5","message":"plugin: add ability to queue more events in the evdev_frame callback\n\nThis adds a event queue pointer to each plugin that is set when the\nplugin's evdev_frame() callback is invoked. If the plugin calls\nlibinput_plugin_queue_event_frame() during the callback the given\nevent frame is appended to an event frame list (starting with the\ncurrent frame). Once the callback completes, that frame list is\npassed to the next plugin and each frame is replayed on the next plugin.\n\nIn the case of multiple plugins queueing events this effectively builds\na tree of frames which each level of the tree representing one plugin.\n\nPart-of: \n","title":"plugin: add ability to queue more events in the evdev_frame callback","timestamp":"2025-06-18T06:18:53+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/7137eb9702f103ac00a5b37fbea2641812211da5","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":[],"modified":["src/libinput-plugin.c","src/libinput-plugin.h"],"removed":[]},{"id":"e69c0b9bfbaee0edd8612a3548224984604f9061","message":"plugin: allow a prefix during event frame printing\n\nPart-of: \n","title":"plugin: allow a prefix during event frame printing","timestamp":"2025-06-18T06:18:54+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/e69c0b9bfbaee0edd8612a3548224984604f9061","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":[],"modified":["src/libinput-plugin.c"],"removed":[]},{"id":"5698e3c12fd9781d602333919d261b6c84c298fc","message":"plugin: wrap timers for use by plugins\n\nWrapping timers means plugins we can set up the event queue for a plugin\nwhen the timer triggers, allowing plugins to queue events during the\ntimer func.\n\nPart-of: \n","title":"plugin: wrap timers for use by plugins","timestamp":"2025-06-18T06:18:54+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/5698e3c12fd9781d602333919d261b6c84c298fc","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":[],"modified":["src/libinput-plugin.c","src/libinput-plugin.h"],"removed":[]},{"id":"83222a079887b908e10c84832c4586ba0d88c0f8","message":"plugins: Add the ability for a plugin to inject evdev frames\n\nThis adds a callback for plugins (and lua plugins) to inject an evdev\nframe into the event stream. Unlike the prepend/append functions\nthis one injects the event at the bottom of the plugin stack as if\nthe device had sent the frame right then and there.\n\nThere's a drawback though: the event frame isn't marked as synthetic\nso it cannot be identified without having a guard in the plugin so\nthe same frame is not reprocessed.\n\nPart-of: \n","title":"plugins: Add the ability for a plugin to inject evdev frames","timestamp":"2025-06-18T06:18:54+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/83222a079887b908e10c84832c4586ba0d88c0f8","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":[],"modified":["src/evdev.c","src/libinput-plugin.c","src/libinput-plugin.h","src/libinput-private.h"],"removed":[]},{"id":"905b4c6a4cce6dce87bf9653b41d55923e03ab71","message":"evdev: implement our evdev device dispatch as plugin\n\nThis makes event handling easier where plugins queue other event frames\nper frame. Our initialization guarantees that our evdev code is alway\nthe last plugin in the series so in the no-plugin case we just pass on\nto that.\n\nThe effective event flow is now:\n evdev.c -> plugin1 -> plugin2 -> evdev-plugin.c -> evdev.c\nexcept that no plugins exist yet.\n\nPart-of: \n","title":"evdev: implement our evdev device dispatch as plugin","timestamp":"2025-06-18T06:18:54+00:00","url":"https://gitlab.freedesktop.org/libinput/libinput/-/commit/905b4c6a4cce6dce87bf9653b41d55923e03ab71","author":{"name":"Peter Hutterer","email":"peter.hutterer@who-t.net"},"added":["src/evdev-plugin.c","src/evdev-plugin.h"],"modified":["meson.build","src/evdev.c","src/libinput-plugin-system.h","src/libinput-plugin.c","src/path-seat.c","src/udev-seat.c"],"removed":[]}],"total_commits_count":7,"push_options":{},"repository":{"name":"libinput","url":"git@ssh.gitlab.freedesktop.org:libinput/libinput.git","description":"Input device management and event handling library","homepage":"https://gitlab.freedesktop.org/libinput/libinput","git_http_url":"https://gitlab.freedesktop.org/libinput/libinput.git","git_ssh_url":"git@ssh.gitlab.freedesktop.org:libinput/libinput.git","visibility_level":20}}