summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kloet <andrew@kloet.net>2025-07-03 19:13:21 -0400
committerAndrew Kloet <andrew@kloet.net>2025-07-03 19:13:21 -0400
commit101ebe171f27463901d698254f84c4072dcc9745 (patch)
treed8af496c6fde3a76b06379b42553225870512bcf
parente74b4b900d9bf23d07f74cc9b01dec2c246e68f8 (diff)
add song buffer to prevent duplication
-rw-r--r--mpd_ws.c7
-rw-r--r--mpd_ws.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/mpd_ws.c b/mpd_ws.c
index a12a6f7..b99ef29 100644
--- a/mpd_ws.c
+++ b/mpd_ws.c
@@ -250,7 +250,12 @@ void mpd_ws_update_song(struct mpd_ws_server *server) {
}
syslog(LOG_DEBUG, "Broadcasting: %s", server->current_song);
- client_broadcast(server, server->current_song);
+
+ /* Only broadcast if song actually changed */
+ if (strcmp(server->current_song, server->previous_song) != 0) {
+ client_broadcast(server, server->current_song);
+ strcpy(server->previous_song, server->current_song);
+ }
if (song) {
mpd_song_free(song);
diff --git a/mpd_ws.h b/mpd_ws.h
index 741bd18..7802d0c 100644
--- a/mpd_ws.h
+++ b/mpd_ws.h
@@ -24,6 +24,7 @@ struct mpd_ws_server {
struct mpd_connection *mpd_conn;
struct client_session *clients;
char current_song[MAX_MESSAGE_SIZE];
+ char previous_song[MAX_MESSAGE_SIZE];
volatile int running;
int mpd_idle_active;
};