Merge pull request #2368 from RyanDwyer/handle-out-of-fds
Handle out-of-fd situations gracefully for transaction and urgent timers
This commit is contained in:
commit
e4b54ac16e
|
@ -1,4 +1,5 @@
|
||||||
#define _POSIX_C_SOURCE 200809L
|
#define _POSIX_C_SOURCE 200809L
|
||||||
|
#include <errno.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -316,7 +317,14 @@ static void transaction_commit(struct sway_transaction *transaction) {
|
||||||
// Set up a timer which the views must respond within
|
// Set up a timer which the views must respond within
|
||||||
transaction->timer = wl_event_loop_add_timer(server.wl_event_loop,
|
transaction->timer = wl_event_loop_add_timer(server.wl_event_loop,
|
||||||
handle_timeout, transaction);
|
handle_timeout, transaction);
|
||||||
|
if (transaction->timer) {
|
||||||
wl_event_source_timer_update(transaction->timer, txn_timeout_ms);
|
wl_event_source_timer_update(transaction->timer, txn_timeout_ms);
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "Unable to create transaction timer (%s). "
|
||||||
|
"Some imperfect frames might be rendered.",
|
||||||
|
strerror(errno));
|
||||||
|
handle_timeout(transaction);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The debug tree shows the pending/live tree. Here is a good place to
|
// The debug tree shows the pending/live tree. Here is a good place to
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#define _XOPEN_SOURCE 700
|
#define _XOPEN_SOURCE 700
|
||||||
#define _POSIX_C_SOURCE 199309L
|
#define _POSIX_C_SOURCE 199309L
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <errno.h>
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#include <linux/input-event-codes.h>
|
#include <linux/input-event-codes.h>
|
||||||
#elif __FreeBSD__
|
#elif __FreeBSD__
|
||||||
|
@ -696,8 +697,14 @@ void seat_set_focus_warp(struct sway_seat *seat,
|
||||||
config->urgent_timeout > 0) {
|
config->urgent_timeout > 0) {
|
||||||
view->urgent_timer = wl_event_loop_add_timer(server.wl_event_loop,
|
view->urgent_timer = wl_event_loop_add_timer(server.wl_event_loop,
|
||||||
handle_urgent_timeout, view);
|
handle_urgent_timeout, view);
|
||||||
|
if (view->urgent_timer) {
|
||||||
wl_event_source_timer_update(view->urgent_timer,
|
wl_event_source_timer_update(view->urgent_timer,
|
||||||
config->urgent_timeout);
|
config->urgent_timeout);
|
||||||
|
} else {
|
||||||
|
wlr_log(WLR_ERROR, "Unable to create urgency timer (%s)",
|
||||||
|
strerror(errno));
|
||||||
|
handle_urgent_timeout(view);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
view_set_urgent(view, false);
|
view_set_urgent(view, false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue