diff options
Diffstat (limited to 'src/libsink/desktop.c')
| -rw-r--r-- | src/libsink/desktop.c | 15 |
1 files changed, 10 insertions, 5 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); } |