ply_event_loop_t *loop;
ply_hashtable_t *terminals;
ply_terminal_t *local_console_terminal;
+ ply_seat_t *local_console_seat;
ply_list_t *seats;
struct udev *udev_context;
struct udev_monitor *udev_monitor;
ply_renderer_type_t renderer_type)
{
ply_seat_t *seat;
+ bool is_local_terminal = false;
+
+ if (terminal != NULL && manager->local_console_terminal == terminal)
+ is_local_terminal = true;
+
+ if (is_local_terminal && manager->local_console_seat != NULL)
+ {
+ ply_trace ("trying to create seat for local console when one already exists");
+ return;
+ }
ply_trace ("creating seat for %s (renderer type: %u) (terminal: %s)",
device_path? : "", renderer_type, terminal? ply_terminal_get_name (terminal): "none");
ply_list_append_data (manager->seats, seat);
+ if (is_local_terminal)
+ manager->local_console_seat = seat;
+
if (manager->seat_added_handler != NULL)
manager->seat_added_handler (manager->seat_event_handler_data, seat);
}