[mutter] device-manager-evdev: Set and unset the stage for the main seat too



commit d7bdc1591fba5353b23a28ebf676da0e7b58c84e
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Wed May 16 11:55:15 2018 +0100

    device-manager-evdev: Set and unset the stage for the main seat too
    
    When no input devices are available on startup the device manager might be fast
    enough to be constructed so that no default stage is set yet, and thus when
    main seat virtual devices are created they won't have a proper stage set.
    If then we plug a real device, the events that an input manager could generate
    won't be associated to any stage and thus won't be processed.
    
    We need then ensure that when we update the stage for the device manager we
    (un)associate it also to the main seat devices.

 clutter/clutter/evdev/clutter-device-manager-evdev.c | 4 ++++
 1 file changed, 4 insertions(+)
---
diff --git a/clutter/clutter/evdev/clutter-device-manager-evdev.c 
b/clutter/clutter/evdev/clutter-device-manager-evdev.c
index 812ad8c08..b830dd5c6 100644
--- a/clutter/clutter/evdev/clutter-device-manager-evdev.c
+++ b/clutter/clutter/evdev/clutter-device-manager-evdev.c
@@ -2070,6 +2070,8 @@ clutter_device_manager_evdev_stage_added_cb (ClutterStageManager *manager,
   priv->stage = stage;
 
   /* Set the stage of any devices that don't already have a stage */
+  clutter_seat_evdev_set_stage (priv->main_seat, stage);
+
   for (l = priv->seats; l; l = l->next)
     {
       ClutterSeatEvdev *seat = l->data;
@@ -2095,6 +2097,8 @@ clutter_device_manager_evdev_stage_removed_cb (ClutterStageManager *manager,
 
   /* Remove the stage of any input devices that were pointing to this
      stage so we don't send events to invalid stages */
+  clutter_seat_evdev_set_stage (priv->main_seat, NULL);
+
   for (l = priv->seats; l; l = l->next)
     {
       ClutterSeatEvdev *seat = l->data;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]