On occasion I restart sndiod which causes i3status to stop reporting the
volume level. The below patch resets initialized after a disconnect so
on the next poll i3status will attempt to reconnect to the new sndiod.
I opted against resetting initialized in cleanup so a failure in init
won't be retried.


diff --git patches/patch-src_sndio_c patches/patch-src_sndio_c
index 1918558bf36..dd4e81598a0 100644
--- patches/patch-src_sndio_c
+++ patches/patch-src_sndio_c
@@ -3,7 +3,7 @@ Add sndio volume backend.
 Index: src/sndio.c
 --- src/sndio.c.orig
 +++ src/sndio.c
-@@ -0,0 +1,201 @@
+@@ -0,0 +1,202 @@
 +#include <poll.h>
 +#include <sndio.h>
 +#include <stdio.h>
@@ -183,6 +183,7 @@ Index: src/sndio.c
 +            if (sioctl_revents(hdl, pfds) & POLLHUP) {
 +                fprintf(stderr, "sndio: disconnected\n");
 +                cleanup();
++                initialized = 0;
 +                return -1;
 +            }
 +        }

Reply via email to