diff --git a/dbus-service.c b/dbus-service.c
index 20150abd..1a952ee9 100644
--- a/dbus-service.c
+++ b/dbus-service.c
@@ -43,6 +43,17 @@ void dbus_metadata_watcher(struct metadata_bundle *argc, __attribute__((unused))
shairport_sync_advanced_remote_control_set_available(shairportSyncAdvancedRemoteControlSkeleton,
FALSE);
}
+
+ if (argc->progress_string) {
+ debug(1, "Check progress string");
+ th = shairport_sync_remote_control_get_progress_string(
+ shairportSyncRemoteControlSkeleton);
+ if ((th == NULL) || (strcasecmp(th, argc->progress_string) != 0)) {
+ debug(1, "Progress string should be changed");
+ shairport_sync_remote_control_set_progress_string(
+ shairportSyncRemoteControlSkeleton, argc->progress_string);
+ }
+ }
switch (argc->player_state) {
case PS_NOT_AVAILABLE:
diff --git a/metadata_hub.c b/metadata_hub.c
index 4f3fc0f8..d1006b43 100644
--- a/metadata_hub.c
+++ b/metadata_hub.c
@@ -517,6 +517,16 @@ void metadata_hub_process_metadata(uint32_t type, uint32_t code, char *data, uin
}
break;
*/
+ case 'prgr':
+ if ((metadata_store.progress_string == NULL) ||
+ (strncmp(metadata_store.progress_string, data, length) != 0)) {
+ metadata_hub_modify_prolog();
+ release_char_string(&metadata_store.progress_string);
+ metadata_store.progress_string = strndup(data, length);
+ debug(1, "MH Progress String set to: \"%s\"", metadata_store.progress_string);
+ metadata_hub_modify_epilog(1);
+ }
+ break;
case 'svip':
if ((metadata_store.server_ip == NULL) ||
(strncmp(metadata_store.server_ip, data, length) != 0)) {
diff --git a/metadata_hub.h b/metadata_hub.h
index 8d003703..66368f98 100644
--- a/metadata_hub.h
+++ b/metadata_hub.h
@@ -56,6 +56,7 @@ typedef struct metadata_bundle {
char *client_ip; // IP number used by the audio source (i.e. the "client"), which is also the DACP
// server
char *server_ip; // IP number used by Shairport Sync
+ char *progress_string; // progress string, emitted by the source from time to time
int player_thread_active; // true if a play thread is running
int dacp_server_active; // true if there's a reachable DACP server (assumed to be the Airplay
// client) ; false otherwise
diff --git a/org.gnome.ShairportSync.xml b/org.gnome.ShairportSync.xml
index ae404be7..aa693fd5 100644
--- a/org.gnome.ShairportSync.xml
+++ b/org.gnome.ShairportSync.xml
@@ -33,6 +33,7 @@
+