Make idle handling per seat

This commit is contained in:
Mattias Eriksson 2018-04-23 10:49:55 +02:00
parent dd1a2922a4
commit 581d24079c
3 changed files with 24 additions and 4 deletions

View file

@ -2,5 +2,6 @@
#define _SWAY_IDLE_H
#include <sway/server.h>
void idle_setup_seat(struct sway_server *server, struct sway_seat *seat);
bool idle_init(struct sway_server *server);
#endif

View file

@ -68,12 +68,28 @@ static const struct wlr_idle_timeout_listener lock_listener = {
.resumed = handle_nop,
};
void idle_setup_seat(struct sway_server *server, struct sway_seat *seat) {
if (server->idle == NULL) {
return;
}
if (config != NULL) {
wlr_log(L_DEBUG, "Setup idle timer %d", config->idle_timeout);
wlr_idle_listen(server->idle, config->idle_timeout * 1000, &idle_listener, seat->wlr_seat);
wlr_log(L_DEBUG, "Setup lock timer %d", config->lock_timeout);
wlr_idle_listen(server->idle, config->lock_timeout * 1000, &lock_listener, seat->wlr_seat);
} else {
wlr_log(L_ERROR, "Cant setup idle timers for seat since no config is available!");
}
}
bool idle_init(struct sway_server *server) {
wlr_log(L_DEBUG, "Initializing idle");
server->idle = wlr_idle_create(server->wl_display);
wlr_log(L_DEBUG, "Setup idle timer %d", config->idle_timeout);
wlr_idle_listen(server->idle, config->idle_timeout * 1000, &idle_listener);
wlr_log(L_DEBUG, "Setup lock timer %d", config->lock_timeout);
wlr_idle_listen(server->idle, config->lock_timeout * 1000, &lock_listener);
struct sway_seat *seat = NULL;
wl_list_for_each(seat, &input_manager->seats, link) {
idle_setup_seat(server, seat);
}
return true;
}

View file

@ -19,6 +19,7 @@
#include "sway/tree/container.h"
#include "sway/tree/view.h"
#include "sway/tree/workspace.h"
#include "sway/idle.h"
#include "log.h"
static void seat_device_destroy(struct sway_seat_device *seat_device) {
@ -257,6 +258,8 @@ struct sway_seat *seat_create(struct sway_input_manager *input,
wl_list_insert(&input->seats, &seat->link);
idle_setup_seat(input->server, seat);
return seat;
}