summaryrefslogtreecommitdiff
path: root/src/libsink
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2026-04-13 17:01:47 -0400
committerAndrew Opalach <andrew@akon.city> 2026-04-13 17:01:47 -0400
commit77b54c35bf9587450cd636e0d7df37e190e28bfb (patch)
treea290efdd8b09066847199f3f52a32be70d24ef51 /src/libsink
parent20617b9c80cf8d8051ecdb53a2c22f68c012f21b (diff)
downloadcamu-77b54c35bf9587450cd636e0d7df37e190e28bfb.tar.gz
camu-77b54c35bf9587450cd636e0d7df37e190e28bfb.tar.bz2
camu-77b54c35bf9587450cd636e0d7df37e190e28bfb.zip
Smaller stuff that went uncommitted
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/libsink')
-rw-r--r--src/libsink/desktop.c15
-rw-r--r--src/libsink/desktop.h4
2 files changed, 12 insertions, 7 deletions
diff --git a/src/libsink/desktop.c b/src/libsink/desktop.c
index af6fc50..ccc34a3 100644
--- a/src/libsink/desktop.c
+++ b/src/libsink/desktop.c
@@ -146,10 +146,10 @@ static void log_sink_status(struct camu_desktop *c)
offset += al_snprintf(status + offset, sizeof(status) - offset, "]");
status[offset] = '\0';
- log_info("%s, window size: %ux%u, volume: %.2f", status, c->scr.width, c->scr.height, c->mixer.volume);
+ log_info("%s, window size: %ux%u, volume: %.2f.", status, c->scr.width, c->scr.height, c->mixer.volume);
return;
notplaying:
- log_info("Not playing, window size: %ux%u", c->scr.width, c->scr.height);
+ log_info("Not playing, window size: %ux%u, volume %.2f.", c->scr.width, c->scr.height, c->mixer.volume);
}
static void screen_callback(void *userdata, u8 op, void *opaque)
@@ -158,6 +158,9 @@ static void screen_callback(void *userdata, u8 op, void *opaque)
switch (op) {
case CAMU_SCREEN_SET_VOLUME: {
f32 volume = *(f32 *)opaque;
+ if (volume == -1.f) {
+ volume = (c->mixer.volume == 0.f) ? 1.f : 0.f;
+ }
camu_mixer_set_volume(&c->mixer, volume);
log_info("Volume: %f.", volume);
break;
@@ -203,11 +206,11 @@ static void screen_callback(void *userdata, u8 op, void *opaque)
}
}
-bool camu_desktop_open(struct camu_desktop *c, const char *window_name)
+bool camu_desktop_open(struct camu_desktop *c, char *window_name)
{
c->scr.callback = screen_callback;
c->scr.userdata = c;
- if (!camu_screen_init(&c->scr) || !camu_screen_create_window(&c->scr, window_name)) {
+ if (!(camu_screen_init(&c->scr) && camu_screen_create_window(&c->scr, window_name))) {
log_error("Failed to create window.");
return false;
}
@@ -279,6 +282,8 @@ void camu_desktop_free(struct camu_desktop *c)
camu_sink_free(&c->sink);
al_str_free(&c->sink.default_list);
camu_mixer_close(&c->mixer);
- c->renderer->free(&c->renderer);
+ if (c->renderer) {
+ c->renderer->free(&c->renderer);
+ }
camu_screen_close(&c->scr);
}
diff --git a/src/libsink/desktop.h b/src/libsink/desktop.h
index 3c66a22..ab0e418 100644
--- a/src/libsink/desktop.h
+++ b/src/libsink/desktop.h
@@ -11,7 +11,7 @@
struct camu_desktop {
struct nn_event_loop *loop;
- s32 should_quit;
+ u32 should_quit;
struct camu_screen scr;
struct camu_renderer *renderer;
struct camu_mixer mixer;
@@ -20,7 +20,7 @@ struct camu_desktop {
void *userdata;
};
-bool camu_desktop_open(struct camu_desktop *c, const char *window_name);
+bool camu_desktop_open(struct camu_desktop *c, char *window_name);
bool camu_desktop_connect(struct camu_desktop *c, str *name, struct nn_event_loop *loop, u8 type, str *addr, u16 port);
bool camu_desktop_tick(struct camu_desktop *c);
void camu_desktop_stop(struct camu_desktop *c);