1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 typedef struct Seat Seat
;
7 #include "logind-session.h"
15 LIST_HEAD(Device
, devices
);
18 Session
*pending_switch
;
19 LIST_HEAD(Session
, sessions
);
22 size_t position_count
;
27 LIST_FIELDS(Seat
, gc_queue
);
30 int seat_new(Seat
**ret
, Manager
*m
, const char *id
);
31 Seat
* seat_free(Seat
*s
);
33 DEFINE_TRIVIAL_CLEANUP_FUNC(Seat
*, seat_free
);
35 int seat_save(Seat
*s
);
36 int seat_load(Seat
*s
);
38 int seat_apply_acls(Seat
*s
, Session
*old_active
);
39 int seat_set_active(Seat
*s
, Session
*session
);
40 int seat_switch_to(Seat
*s
, unsigned num
);
41 int seat_switch_to_next(Seat
*s
);
42 int seat_switch_to_previous(Seat
*s
);
43 int seat_active_vt_changed(Seat
*s
, unsigned vtnr
);
44 int seat_read_active_vt(Seat
*s
);
45 int seat_preallocate_vts(Seat
*s
);
47 int seat_attach_session(Seat
*s
, Session
*session
);
48 void seat_complete_switch(Seat
*s
);
49 void seat_evict_position(Seat
*s
, Session
*session
);
50 void seat_claim_position(Seat
*s
, Session
*session
, unsigned pos
);
52 bool seat_has_vts(Seat
*s
);
53 bool seat_is_seat0(Seat
*s
);
54 bool seat_can_multi_session(Seat
*s
);
55 bool seat_can_tty(Seat
*s
);
56 bool seat_has_master_device(Seat
*s
);
57 bool seat_can_graphical(Seat
*s
);
59 int seat_get_idle_hint(Seat
*s
, dual_timestamp
*t
);
61 int seat_start(Seat
*s
);
62 int seat_stop(Seat
*s
, bool force
);
63 int seat_stop_sessions(Seat
*s
, bool force
);
65 bool seat_may_gc(Seat
*s
, bool drop_not_started
);
66 void seat_add_to_gc_queue(Seat
*s
);
68 bool seat_name_is_valid(const char *name
);
70 extern const sd_bus_vtable seat_vtable
[];
72 int seat_node_enumerator(sd_bus
*bus
, const char *path
, void *userdata
, char ***nodes
, sd_bus_error
*error
);
73 int seat_object_find(sd_bus
*bus
, const char *path
, const char *interface
, void *userdata
, void **found
, sd_bus_error
*error
);
74 char *seat_bus_path(Seat
*s
);
76 int seat_send_signal(Seat
*s
, bool new_seat
);
77 int seat_send_changed(Seat
*s
, const char *properties
, ...) _sentinel_
;
79 int bus_seat_method_terminate(sd_bus_message
*message
, void *userdata
, sd_bus_error
*error
);