aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--swaynag/swaynag.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/swaynag/swaynag.c b/swaynag/swaynag.c
index f0c6a3c5..eb31da57 100644
--- a/swaynag/swaynag.c
+++ b/swaynag/swaynag.c
@@ -239,10 +239,14 @@ static struct wl_pointer_listener pointer_listener = {
static void seat_handle_capabilities(void *data, struct wl_seat *wl_seat,
enum wl_seat_capability caps) {
struct swaynag *swaynag = data;
- if ((caps & WL_SEAT_CAPABILITY_POINTER)) {
+ bool cap_pointer = caps & WL_SEAT_CAPABILITY_POINTER;
+ if (cap_pointer && !swaynag->pointer.pointer) {
swaynag->pointer.pointer = wl_seat_get_pointer(wl_seat);
wl_pointer_add_listener(swaynag->pointer.pointer, &pointer_listener,
swaynag);
+ } else if (!cap_pointer && swaynag->pointer.pointer) {
+ wl_pointer_destroy(swaynag->pointer.pointer);
+ swaynag->pointer.pointer = NULL;
}
}