1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2011 Lennart Poettering
8 typedef struct Seat Seat
;
11 #include "logind-session.h"
19 LIST_HEAD(Device
, devices
);
22 Session
*pending_switch
;
23 LIST_HEAD(Session
, sessions
);
26 size_t position_count
;
31 LIST_FIELDS(Seat
, gc_queue
);
34 Seat
*seat_new(Manager
*m
, const char *id
);
35 void seat_free(Seat
*s
);
37 int seat_save(Seat
*s
);
38 int seat_load(Seat
*s
);
40 int seat_apply_acls(Seat
*s
, Session
*old_active
);
41 int seat_set_active(Seat
*s
, Session
*session
);
42 int seat_switch_to(Seat
*s
, unsigned int num
);
43 int seat_switch_to_next(Seat
*s
);
44 int seat_switch_to_previous(Seat
*s
);
45 int seat_active_vt_changed(Seat
*s
, unsigned int vtnr
);
46 int seat_read_active_vt(Seat
*s
);
47 int seat_preallocate_vts(Seat
*s
);
49 int seat_attach_session(Seat
*s
, Session
*session
);
50 void seat_complete_switch(Seat
*s
);
51 void seat_evict_position(Seat
*s
, Session
*session
);
52 void seat_claim_position(Seat
*s
, Session
*session
, unsigned int pos
);
54 bool seat_has_vts(Seat
*s
);
55 bool seat_is_seat0(Seat
*s
);
56 bool seat_can_multi_session(Seat
*s
);
57 bool seat_can_tty(Seat
*s
);
58 bool seat_has_master_device(Seat
*s
);
59 bool seat_can_graphical(Seat
*s
);
61 int seat_get_idle_hint(Seat
*s
, dual_timestamp
*t
);
63 int seat_start(Seat
*s
);
64 int seat_stop(Seat
*s
, bool force
);
65 int seat_stop_sessions(Seat
*s
, bool force
);
67 bool seat_may_gc(Seat
*s
, bool drop_not_started
);
68 void seat_add_to_gc_queue(Seat
*s
);
70 bool seat_name_is_valid(const char *name
);
72 extern const sd_bus_vtable seat_vtable
[];
74 int seat_node_enumerator(sd_bus
*bus
, const char *path
, void *userdata
, char ***nodes
, sd_bus_error
*error
);
75 int seat_object_find(sd_bus
*bus
, const char *path
, const char *interface
, void *userdata
, void **found
, sd_bus_error
*error
);
76 char *seat_bus_path(Seat
*s
);
78 int seat_send_signal(Seat
*s
, bool new_seat
);
79 int seat_send_changed(Seat
*s
, const char *properties
, ...) _sentinel_
;
81 int bus_seat_method_terminate(sd_bus_message
*message
, void *userdata
, sd_bus_error
*error
);