Introduction
Introduction Statistics Contact Development Disclaimer Help
tmix: add TinyALSA support - spoon - dwm status utility (2f30 fork)
git clone git://src.adamsgaard.dk/spoon
Log
Files
Refs
LICENSE
---
commit bd6425ea89b3da5f3f9da693110db6e891b3c474
parent 27087e9c6c2e404ad71a440f2ddf7c76b36831e5
Author: Svyatoslav Mishyn <[email protected]>
Date: Mon, 23 Oct 2017 23:37:12 +0300
mix: add TinyALSA support
Diffstat:
M Makefile | 5 +++++
M mix.c | 48 +++++++++++++++++++++++++++++…
2 files changed, 52 insertions(+), 1 deletion(-)
---
diff --git a/Makefile b/Makefile
t@@ -25,7 +25,12 @@ LDLIBS = -lX11
# comment out the following sections. The stub implementations
# from stub.c will be used instead.
OBJ += mix.o
+# if ALSA
LDLIBS_Linux_mix = -lasound
+CPPFLAGS += -DUSE_TINYALSA=0
+# else TinyALSA
+#LDLIBS_Linux_mix = -ltinyalsa
+#CPPFLAGS += -DUSE_TINYALSA=1
LDLIBS += $(LDLIBS_$(UNAME)_mix)
OBJ += xkblayout.o
diff --git a/mix.c b/mix.c
t@@ -66,7 +66,7 @@ out:
close(fd);
return ret;
}
-#elif __linux__
+#elif __linux__ && !USE_TINYALSA
#include <alsa/asoundlib.h>
static int master;
t@@ -166,4 +166,50 @@ out:
mixerp = NULL;
return -1;
}
+#elif __linux__ && USE_TINYALSA
+#include <tinyalsa/asoundlib.h>
+
+int
+mixread(void *arg, char *buf, size_t len)
+{
+ struct mixer *mixer;
+ struct mixer_ctl *ctl;
+ int vol, max;
+ int rc = 0;
+ (void)arg;
+
+ if ((mixer = mixer_open(0)) == NULL) {
+ fprintf(stderr, "mixer_open() failed\n");
+ return -1;
+ }
+
+ /* Master Playback Switch, see `tinymix contents` */
+ if ((ctl = mixer_get_ctl(mixer, 10)) == NULL) {
+ fprintf(stderr, "mixer_get_ctl_by_name() failed\n");
+ rc = -1;
+ goto exit;
+ }
+ if (!mixer_ctl_get_value(ctl, 0)) {
+ snprintf(buf, len, "mute");
+ goto exit;
+ }
+
+ /* Master Playback Volume, see `tinymix contents` */
+ if ((ctl = mixer_get_ctl(mixer, 9)) == NULL) {
+ fprintf(stderr, "mixer_get_ctl_by_name() failed\n");
+ rc = -1;
+ goto exit;
+ }
+ if (!(vol = mixer_ctl_get_value(ctl, 0))) {
+ snprintf(buf, len, "0%%");
+ goto exit;
+ }
+
+ max = mixer_ctl_get_range_max(ctl);
+ snprintf(buf, len, "%d%%", vol * 100 / max);
+
+exit:
+ mixer_close(mixer);
+ return rc;
+}
#endif
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.