From 2fa7ea95c891981684a55b41977172d040c2cc55 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sun, 25 May 2025 18:49:20 -0400 Subject: Support Windows XP (Old FFmpeg and build fixes) Signed-off-by: Andrew Opalach --- src/libsink/desktop.c | 17 +++++++++-------- src/libsink/sink.c | 23 +++++++++++++---------- 2 files changed, 22 insertions(+), 18 deletions(-) (limited to 'src/libsink') diff --git a/src/libsink/desktop.c b/src/libsink/desktop.c index 2bbe906..a2d02c9 100644 --- a/src/libsink/desktop.c +++ b/src/libsink/desktop.c @@ -8,8 +8,8 @@ #else #include "../mixer/audio_miniaudio.h" #endif -#if defined CAMU_RENDERER_TIGER -#include "../render/renderer_tiger.h" +#if defined CAMU_RENDERER_MOMO +#include "../render/renderer_momo.h" #elif defined CAMU_RENDERER_LIBPLACEBO #include "../render/renderer_libplacebo.h" #endif @@ -111,8 +111,9 @@ static u8 sink_callback(void *userdata, u8 op, u8 type, void *opaque) } static char status[64]; -static void log_playback_pos(struct camu_sink *sink) +static void log_sink_status(struct camu_desktop *c) { + struct camu_sink *sink = &c->sink; struct camu_sink_entry *current = camu_sink_get_current(sink); if (!current) { camu_sink_return_current(sink); @@ -140,10 +141,10 @@ static void log_playback_pos(struct camu_sink *sink) offset += al_snprintf(status + offset, sizeof(status) - offset, "]"); status[offset] = '\0'; - log_info("%s", status); + log_info("%s, window size: %ux%u", status, c->scr.width, c->scr.height); return; notplaying: - log_info("Not playing."); + log_info("Not playing, window size: %ux%u", c->scr.width, c->scr.height); } static void screen_callback(void *userdata, u8 op, void *opaque) @@ -175,7 +176,7 @@ static void screen_callback(void *userdata, u8 op, void *opaque) camu_sink_shuffle(&c->sink); break; case CAMU_SCREEN_STATUS: - log_playback_pos(&c->sink); + log_sink_status(c); break; #ifdef CAMU_SCREEN_DEBUG_KEY case CAMU_SCREEN_DEBUG: @@ -199,8 +200,8 @@ bool camu_desktop_open(struct camu_desktop *c, const char *window_name) if (!camu_screen_init(&c->scr) || !camu_screen_create_window(&c->scr, window_name)) { return false; } -#if defined CAMU_RENDERER_TIGER - c->renderer = camu_renderer_tiger_create(); +#if defined CAMU_RENDERER_MOMO + c->renderer = camu_renderer_momo_create(); #elif defined CAMU_RENDERER_LIBPLACEBO c->renderer = camu_renderer_lp_create(); #endif diff --git a/src/libsink/sink.c b/src/libsink/sink.c index 07bb604..56be556 100644 --- a/src/libsink/sink.c +++ b/src/libsink/sink.c @@ -468,18 +468,17 @@ static void mixer_callback(void *userdata, u8 op) struct camu_sink *sink = (struct camu_sink *)userdata; if (op == CAMU_MIXER_EMPTY) { log_info("Mixer empty."); -#ifndef LIANA_LIST_SCUFFED_LOOP // We need to sync with do_add_entry() because the order of // the START/STOP's in the queue matters. nn_mutex_lock(&sink->lock); - queue_cmd(sink, (struct camu_sink_cmd){ - .op = STOP, - .value.i = CAMU_SINK_AUDIO - }); + // This feels a bit too loose. + if (!(sink->current && AUDIO_STATE(sink->current) == BUFFER_ADDED)) { + queue_cmd(sink, (struct camu_sink_cmd){ + .op = STOP, + .value.i = CAMU_SINK_AUDIO + }); + } nn_mutex_unlock(&sink->lock); -#else - (void)sink; -#endif } } @@ -1526,11 +1525,15 @@ static struct nn_rpc_command commands[] = { { .op = CAMU_SINK_SEEK, .callback = seek_command_callback, .userdata = NULL } }; +// @TODO: Send sink id from list. static void identify_callback(void *userdata, struct nn_rpc_connection *conn, struct nn_packet *packet) { struct camu_sink *sink = (struct camu_sink *)userdata; - (void)sink; - // @TODO: Send sink id from list. + if (sink->type == NNWT_SOCKET_UNIX) { + log_info("Sink connected to %.*s.", al_str_x(&sink->addr)); + } else { + log_info("Sink connected to %.*s:%hu.", al_str_x(&sink->addr), sink->port); + } nn_packet_stream_return_packet(conn->stream, packet); } -- cgit v1.2.3-101-g0448