mutter/src/backends
Marco Trevisan (Treviño) 9db289b4ae seat-x11: Translate device enabled/disabled into clutter events
When a device is removed from the seat the events that this device may have
emitted just before being removed might still be in the stage events queue,
this may lead a to a crash because:

Once the device is removed, we dispose it and the staling event is
kept in queue and sent for processing at next loop.
During event processing we ask the backend to update the last device
with the disposed device
The device is disposed once the events referencing it, are free'd
The actual last device emission happens in an idle, but at this point
the device may have been free'd, and in any case will be still disposed
and so not providing useful informations.

To avoid this, once a device has been added/removed from the seat, we queue
ClutterDeviceEvent events to inform the stack that the device state has
changed, preserving the order with the other actual generated device events.
In this way it can't happen that we emit another event before that the
device has been added or after that it has been removed.

Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1345
2020-08-29 09:33:54 +00:00
..
native *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
x11 seat-x11: Translate device enabled/disabled into clutter events 2020-08-29 09:33:54 +00:00
edid-parse.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
edid.h edid: Remove unused declarations 2014-09-12 11:55:08 -06:00
gsm-inhibitor-flag.h idle-monitor: Take idle inhibition into account 2018-04-16 13:28:03 +02:00
meta-backend-private.h cursor-tracker: Add X11 cursor tracker backend 2020-08-05 11:11:38 +02:00
meta-backend-types.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-backend.c backend: Use connect-after to perform actions on device removed 2020-08-29 09:33:54 +00:00
meta-barrier-private.h Use G_DECLARE_DERIVABLE/FINAL_TYPE on some types 2018-12-21 19:48:50 +00:00
meta-barrier.c cleanup: Don't use G_TYPE_INSTANCE_GET_PRIVATE() 2019-07-18 11:01:09 +02:00
meta-crtc-mode.c crtc-kms: Make KMS CRTC mode a type inheriting MetaCrtcMode 2020-06-11 09:20:16 +00:00
meta-crtc-mode.h crtc-kms: Make KMS CRTC mode a type inheriting MetaCrtcMode 2020-06-11 09:20:16 +00:00
meta-crtc.c crtc: Move out MetaCrtcMode into its own file 2020-06-10 18:54:51 +00:00
meta-crtc.h crtc: Move out MetaCrtcMode into its own file 2020-06-10 18:54:51 +00:00
meta-cursor-renderer.c cursor-renderer: Disconnect the overlay cursor from the displayed cursor 2020-08-05 11:11:38 +02:00
meta-cursor-renderer.h cursor-renderer: Disconnect the overlay cursor from the displayed cursor 2020-08-05 11:11:38 +02:00
meta-cursor-sprite-xcursor.c backend/xcursor: Support a "blank" cursor type 2020-05-22 14:10:50 +00:00
meta-cursor-sprite-xcursor.h cursor-renderer: Fetch instead of pass Xcursor image when realizing 2018-06-15 19:09:52 +00:00
meta-cursor-tracker-private.h cursor-tracker/x11: Also update sprite when updating position 2020-08-05 16:22:16 +02:00
meta-cursor-tracker.c cursor-tracker/x11: Also update sprite when updating position 2020-08-05 16:22:16 +02:00
meta-cursor.c cursor-sprite: Don't NULL check realize_texture() vfunc 2020-08-05 11:11:38 +02:00
meta-cursor.h cursor-sprite: Add API to get dimension 2020-03-26 16:18:28 +00:00
meta-dbus-session-watcher.c dbus-session-watcher: Chain up to parent finalize() 2019-10-14 09:09:01 +02:00
meta-dbus-session-watcher.h Add remote desktop and screen cast functionality 2017-08-29 14:39:04 +08:00
meta-display-config-shared.h Use a consistent style for enum braces 2019-02-28 09:31:01 +01:00
meta-dnd-private.h compositor: Move out X11 compositing code into sub type 2019-08-19 08:44:58 +00:00
meta-egl-ext.h EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-egl.c EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-egl.h EGL: Include EGL/eglmesaext.h 2019-10-21 14:04:30 +00:00
meta-gles3-table.h backends: Add OpenGL ES 3 abstraction layer 2017-10-05 18:17:26 -04:00
meta-gles3.c Fix const qualifier usage 2019-01-22 18:31:53 +01:00
meta-gles3.h Fix const qualifier usage 2019-01-22 18:31:53 +01:00
meta-gpu.c output: Move output info to MetaOutputInfo struct 2020-06-10 18:54:50 +00:00
meta-gpu.h backend: Move GPU ownership from the monitor manager to the backend 2019-06-20 13:31:55 +00:00
meta-idle-monitor-dbus.c backends: Drop per-device idle monitors 2020-02-12 22:07:55 +00:00
meta-idle-monitor-dbus.h
meta-idle-monitor-private.h backends: Do not use device IDs on idle monitors 2020-01-30 18:11:23 +01:00
meta-idle-monitor.c backends: Drop meta_idle_monitor_get_for_device() 2020-02-12 22:07:55 +00:00
meta-input-device-private.h backends: Add MetaInputDevice derivable class 2020-03-24 18:07:31 +00:00
meta-input-device.c backends: move 'input_device' to HAVE_LIBWACOM scope 2020-05-03 23:35:03 +01:00
meta-input-mapper-private.h backends: Check both input settings and mapper for tablet monitors 2020-03-25 19:09:32 +00:00
meta-input-mapper.c backends: Check both input settings and mapper for tablet monitors 2020-03-25 19:09:32 +00:00
meta-input-settings-private.h Include the pkgconfig-specified gdesktop-enums.h 2020-07-13 17:30:20 +08:00
meta-input-settings.c Add tap-button-map and tap-and-drag-lock support to X11 and Wayland 2020-07-10 13:31:46 +00:00
meta-keymap-utils.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
meta-keymap-utils.h compositor: use XDG_CONFIG_HOME as initial lookup path for xkb 2020-06-08 11:29:30 +00:00
meta-logical-monitor.c crtc: Move MetaCrtcConfig field to instance private 2020-06-10 18:54:50 +00:00
meta-logical-monitor.h *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
meta-monitor-config-manager.c monitor-manager: Set switch config when create monitors config 2020-08-13 20:11:15 +00:00
meta-monitor-config-manager.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-monitor-config-migration.c monitor-config-migration: Discard if configured mode is missing 2017-10-04 09:45:02 -04:00
meta-monitor-config-migration.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
meta-monitor-config-store.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
meta-monitor-config-store.h meta: Hide libmutter symbols by default and selectively export them 2019-01-23 14:18:13 +01:00
meta-monitor-manager-dummy.c Fix segfaults on 32-bit systems. 2020-07-24 11:24:08 +00:00
meta-monitor-manager-dummy.h crtc: Make implementations inherit MetaCrtc 2020-06-10 18:54:51 +00:00
meta-monitor-manager-private.h monitor-manager: Rename *Info structs to *Assignment 2020-06-10 18:54:50 +00:00
meta-monitor-manager.c cleanup: Remove duplicate semicolons in C code 2020-07-28 10:32:46 +02:00
meta-monitor-transform.c monitor-transform: Add API to transform point 2020-03-26 16:18:28 +00:00
meta-monitor-transform.h crtc: Move all_transforms field into instance private 2020-06-10 18:54:50 +00:00
meta-monitor.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
meta-monitor.h crtc: Move logical monitor pointer to MetaMonitor 2020-02-25 18:39:51 +01:00
meta-orientation-manager.c orientation-manager: Do not change current orientation when locked 2020-02-07 13:46:45 +01:00
meta-orientation-manager.h Clean up include macros mess 2018-11-06 17:17:36 +01:00
meta-output.c output: Make implementations inherit MetaOutput 2020-06-10 18:54:51 +00:00
meta-output.h output: Make implementations inherit MetaOutput 2020-06-10 18:54:51 +00:00
meta-pointer-constraint.c Add some gtk-doc comments. 2019-01-06 21:57:16 +01:00
meta-pointer-constraint.h Add some gtk-doc comments. 2019-01-06 21:57:16 +01:00
meta-profiler.c cogl: Install cogl-trace.h and include from cogl.h 2020-03-26 09:05:38 +01:00
meta-profiler.h profile: Add a Sysprof-based profiler 2019-05-31 11:57:07 -03:00
meta-remote-access-controller-private.h remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-remote-access-controller.c remote-access-handle: Add 'is-recording' property 2020-07-31 10:41:38 +02:00
meta-remote-desktop-session.c remote-desktop: Check for screencast only when required 2020-06-29 16:41:51 +00:00
meta-remote-desktop-session.h Add remote access controller API 2018-07-20 16:49:49 +02:00
meta-remote-desktop.c remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-remote-desktop.h remote-access-controller: Allow inhibiting remote access 2020-04-27 14:31:06 +00:00
meta-renderer-view.c renderer-view: Keep track of what CRTC it is associated with 2020-07-02 19:36:50 +02:00
meta-renderer-view.h renderer-view: Keep track of what CRTC it is associated with 2020-07-02 19:36:50 +02:00
meta-renderer.c stage-view: Add clutter_stage_view_destroy() 2020-08-13 06:34:04 +00:00
meta-renderer.h clutter: Paint views with individual frame clocks 2020-07-02 19:36:51 +02:00
meta-screen-cast-area-stream-src.c streams: Don't bail out when cursor is outside the stream 2020-08-28 16:34:56 +00:00
meta-screen-cast-area-stream-src.h screen-cast: Add RecordArea for screen cast arbitrary area 2020-04-23 14:45:53 +00:00
meta-screen-cast-area-stream.c screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-area-stream.h screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-monitor-stream-src.c streams: Don't bail out when cursor is outside the stream 2020-08-28 16:34:56 +00:00
meta-screen-cast-monitor-stream-src.h ScreenCast: Pass PipeWire stream node ID directly 2017-08-29 14:39:04 +08:00
meta-screen-cast-monitor-stream.c screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-monitor-stream.h screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-session.c remote-access-handle: Add 'is-recording' property 2020-07-31 10:41:38 +02:00
meta-screen-cast-session.h screen-cast-session: Add 'disable-animations' property 2020-02-20 10:40:42 +00:00
meta-screen-cast-stream-src.c screen-cast-stream-src: Properly unset cursor metadata 2020-08-28 16:34:56 +00:00
meta-screen-cast-stream-src.h screen-cast: Track and always record cursors 2020-08-05 11:11:38 +02:00
meta-screen-cast-stream.c screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-stream.h screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-window-stream-src.c streams: Don't bail out when cursor is outside the stream 2020-08-28 16:34:56 +00:00
meta-screen-cast-window-stream-src.h screen-cast-session: Add screen-cast window mode 2018-12-14 13:26:16 +01:00
meta-screen-cast-window-stream.c screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-window-stream.h screen-cast: Add screen cast flag to streams 2020-07-30 09:51:16 +02:00
meta-screen-cast-window.c window-stream-source: Draw into DMA buffer image 2020-02-28 15:52:19 -03:00
meta-screen-cast-window.h window-stream-source: Draw into DMA buffer image 2020-02-28 15:52:19 -03:00
meta-screen-cast.c screen-cast: Add 'is-recording' option to record methods 2020-07-31 10:41:15 +02:00
meta-screen-cast.h screen-cast: Add 'is-recording' option to record methods 2020-07-31 10:41:15 +02:00
meta-settings-private.h cleanup: remove controversial naming 2020-08-04 10:04:16 +02:00
meta-settings.c cleanup: remove controversial naming 2020-08-04 10:04:16 +02:00
meta-stage-private.h cursor-renderer: Always keep the cursor overlay on the stage 2020-08-05 11:11:38 +02:00
meta-stage.c screen-cast: Track and always record cursors 2020-08-05 11:11:38 +02:00