[dacp] Make sure Remote updates images from metadata pipes

This commit is contained in:
ejurgensen 2019-09-20 21:45:35 +02:00
parent 7316c060b8
commit e1a0e366cf
2 changed files with 7 additions and 2 deletions

View File

@ -173,13 +173,13 @@ dacp_nowplaying(struct evbuffer *evbuf, struct player_status *status, struct db_
if ((status->status == PLAY_STOPPED) || !queue_item) if ((status->status == PLAY_STOPPED) || !queue_item)
return; return;
/* Send bogus id's if playing internet radio, because clients like /* Send bogus id's if playing internet radio or pipe, because clients like
* Remote and Retune will only update metadata (like artwork) if the id's * Remote and Retune will only update metadata (like artwork) if the id's
* change (which they wouldn't do if we sent the real ones) * change (which they wouldn't do if we sent the real ones)
* FIXME: Giving the client invalid ids on purpose is hardly ideal, but the * FIXME: Giving the client invalid ids on purpose is hardly ideal, but the
* clients don't seem to use these ids for anything other than rating. * clients don't seem to use these ids for anything other than rating.
*/ */
if (queue_item->data_kind == DATA_KIND_HTTP) if (queue_item->data_kind == DATA_KIND_HTTP || queue_item->data_kind == DATA_KIND_PIPE)
{ {
id = djb_hash(queue_item->album, strlen(queue_item->album)); id = djb_hash(queue_item->album, strlen(queue_item->album));
songalbumid = (int64_t)id; songalbumid = (int64_t)id;

View File

@ -928,6 +928,11 @@ event_read_metadata(struct input_metadata *metadata)
{ {
DPRINTF(E_DBG, L_PLAYER, "event_read_metadata()\n"); DPRINTF(E_DBG, L_PLAYER, "event_read_metadata()\n");
// FIXME Right now, metadata->pos_ms is not honoured. If it is >0 it is sent
// to the outputs, but the player's pos_ms is not adjusted. That means we
// don't always show correct progress for http streams, pipes and files with
// chapters.
outputs_metadata_send(pb_session.playing_now->item_id, false, metadata_finalize_cb); outputs_metadata_send(pb_session.playing_now->item_id, false, metadata_finalize_cb);
status_update(player_state); status_update(player_state);