aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2020-08-02 21:40:32 +0200
committerKenny Levinsen <kl@kl.wtf>2020-08-02 21:46:13 +0200
commitb2cbe576d10d992116bcaae245247c862cc5395a (patch)
tree7d496804e35f508b34d15f58380109aaae114ccd /include
parent5b4d00d6cff955a31a2179d613dcaa3ade327d28 (diff)
seat: Deactivate devices before sending disable
Previously, seatd would not deactivate devices until the client had acked the disable. In once instance, this lead to libinput spending significant time checking and closing each input device. As a workaround, mimick logind's behavior of deactivating devices first. The original behavior can be reintroduced if the client-side problem is fixed. Closes: https://todo.sr.ht/~kennylevinsen/seatd/5
Diffstat (limited to 'include')
-rw-r--r--include/client.h1
-rw-r--r--include/seat.h7
2 files changed, 5 insertions, 3 deletions
diff --git a/include/client.h b/include/client.h
index 6084980..5046690 100644
--- a/include/client.h
+++ b/include/client.h
@@ -21,6 +21,7 @@ struct client {
struct seat *seat;
int seat_vt;
+ bool pending_disable;
struct list devices;
};
diff --git a/include/seat.h b/include/seat.h
index 5a6c273..d8fc7a8 100644
--- a/include/seat.h
+++ b/include/seat.h
@@ -39,15 +39,16 @@ struct seat *seat_create(const char *name, bool vt_bound);
void seat_destroy(struct seat *seat);
int seat_add_client(struct seat *seat, struct client *client);
-int seat_remove_client(struct seat *seat, struct client *client);
+int seat_remove_client(struct client *client);
int seat_open_client(struct seat *seat, struct client *client);
-int seat_close_client(struct seat *seat, struct client *client);
+int seat_close_client(struct client *client);
+int seat_ack_disable_client(struct client *client);
struct seat_device *seat_open_device(struct client *client, const char *path);
int seat_close_device(struct client *client, struct seat_device *seat_device);
struct seat_device *seat_find_device(struct client *client, int device_id);
-int seat_set_next_session(struct seat *seat, int session);
+int seat_set_next_session(struct client *client, int session);
int seat_activate(struct seat *seat);
int seat_prepare_vt_switch(struct seat *seat);