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; };