aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/desktop/transaction.c9
-rw-r--r--sway/input/seat.c10
2 files changed, 16 insertions, 3 deletions
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c
index ccda1963..a9c9cb58 100644
--- a/sway/desktop/transaction.c
+++ b/sway/desktop/transaction.c
@@ -316,7 +316,14 @@ static void transaction_commit(struct sway_transaction *transaction) {
// Set up a timer which the views must respond within
transaction->timer = wl_event_loop_add_timer(server.wl_event_loop,
handle_timeout, transaction);
- wl_event_source_timer_update(transaction->timer, txn_timeout_ms);
+ if (transaction->timer) {
+ wl_event_source_timer_update(transaction->timer, txn_timeout_ms);
+ } else {
+ wlr_log(WLR_ERROR, "Unable to create transaction timer. "
+ "There might not be any available file descriptors. "
+ "Some imperfect frames might be rendered.");
+ handle_timeout(transaction);
+ }
}
// The debug tree shows the pending/live tree. Here is a good place to
diff --git a/sway/input/seat.c b/sway/input/seat.c
index e7b6e0c5..ab07c03c 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -696,8 +696,14 @@ void seat_set_focus_warp(struct sway_seat *seat,
config->urgent_timeout > 0) {
view->urgent_timer = wl_event_loop_add_timer(server.wl_event_loop,
handle_urgent_timeout, view);
- wl_event_source_timer_update(view->urgent_timer,
- config->urgent_timeout);
+ if (view->urgent_timer) {
+ wl_event_source_timer_update(view->urgent_timer,
+ config->urgent_timeout);
+ } else {
+ wlr_log(WLR_ERROR, "Unable to create urgency timer. "
+ "There might not be any available file descriptors.");
+ handle_urgent_timeout(view);
+ }
} else {
view_set_urgent(view, false);
}