device-manager-evdev: Add main seat to seats by default
authorMarco Trevisan (Treviño) <mail@3v1n0.net>
Wed, 16 May 2018 23:53:48 +0000 (00:53 +0100)
committerSimon McVittie <smcv@debian.org>
Sun, 8 Jul 2018 10:32:56 +0000 (11:32 +0100)
Treat the main seat as other seats, so we don't have to handle it differently
in specific places. This was already the case before when a real device
was plugged before the startup, but not applied when hotplugging a device.

(cherry picked from commit 15f41c9f68abfbb5408205a45f9f578e2ff5ee86)

Origin: upstream, 3.28.3, commit:e73b321c2ed4be6fe2a317d65bdb24238a427c4f

Gbp-Pq: Name device-manager-evdev-Add-main-seat-to-seats-by-default.patch

clutter/clutter/evdev/clutter-device-manager-evdev.c

index a481b75ce5d7b4cfcbe23163e54f7e964c2d527c..f2aeda696569e9f7dc5312e56eb67f0ab8a5bd6f 100644 (file)
@@ -793,10 +793,12 @@ evdev_add_device (ClutterDeviceManagerEvdev *manager_evdev,
       if (priv->main_seat->libinput_seat == NULL)
         seat = priv->main_seat;
       else
-        seat = clutter_seat_evdev_new (manager_evdev);
+        {
+          seat = clutter_seat_evdev_new (manager_evdev);
+          priv->seats = g_slist_append (priv->seats, seat);
+        }
 
       clutter_seat_evdev_set_libinput_seat (seat, libinput_seat);
-      priv->seats = g_slist_append (priv->seats, seat);
     }
 
   device = _clutter_input_device_evdev_new (manager, seat, libinput_device);
@@ -932,7 +934,7 @@ clutter_device_manager_evdev_get_device (ClutterDeviceManager *manager,
         return device;
     }
 
-  return clutter_seat_evdev_get_device (priv->main_seat, id);
+  return NULL;
 }
 
 static void
@@ -1962,6 +1964,7 @@ clutter_device_manager_evdev_constructed (GObject *gobject)
   xkb_context_unref (ctx);
 
   priv->main_seat = clutter_seat_evdev_new (manager_evdev);
+  priv->seats = g_slist_append (priv->seats, priv->main_seat);
 
   dispatch_libinput (manager_evdev);
 
@@ -2010,7 +2013,6 @@ clutter_device_manager_evdev_finalize (GObject *object)
   manager_evdev = CLUTTER_DEVICE_MANAGER_EVDEV (object);
   priv = manager_evdev->priv;
 
-  clutter_seat_evdev_free (priv->main_seat);
   g_slist_free_full (priv->seats, (GDestroyNotify) clutter_seat_evdev_free);
   g_slist_free (priv->devices);
 
@@ -2071,8 +2073,6 @@ 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;
@@ -2098,8 +2098,6 @@ 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;