mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-16 09:08:04 -04:00
[player] Only update queue item in metadata_update_cb on changed
metadata. This avoids an unnecessary update query and queue change notification (leading to clients requesting the unchanged queue).
This commit is contained in:
parent
2ee02d407b
commit
0b07cff633
42
src/player.c
42
src/player.c
@ -385,26 +385,30 @@ metadata_update_cb(void *arg)
|
|||||||
goto out_free_metadata;
|
goto out_free_metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since we won't be using the metadata struct values for anything else than
|
// Update queue item if metadata changed
|
||||||
// this we just swap pointers
|
if (metadata->artist || metadata->title || metadata->album || metadata->genre || metadata->artwork_url || metadata->song_length)
|
||||||
if (metadata->artist)
|
|
||||||
swap_pointers(&queue_item->artist, &metadata->artist);
|
|
||||||
if (metadata->title)
|
|
||||||
swap_pointers(&queue_item->title, &metadata->title);
|
|
||||||
if (metadata->album)
|
|
||||||
swap_pointers(&queue_item->album, &metadata->album);
|
|
||||||
if (metadata->genre)
|
|
||||||
swap_pointers(&queue_item->genre, &metadata->genre);
|
|
||||||
if (metadata->artwork_url)
|
|
||||||
swap_pointers(&queue_item->artwork_url, &metadata->artwork_url);
|
|
||||||
if (metadata->song_length)
|
|
||||||
queue_item->song_length = metadata->song_length;
|
|
||||||
|
|
||||||
ret = db_queue_update_item(queue_item);
|
|
||||||
if (ret < 0)
|
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_PLAYER, "Database error while updating queue with new metadata\n");
|
// Since we won't be using the metadata struct values for anything else than
|
||||||
goto out_free_queueitem;
|
// this we just swap pointers
|
||||||
|
if (metadata->artist)
|
||||||
|
swap_pointers(&queue_item->artist, &metadata->artist);
|
||||||
|
if (metadata->title)
|
||||||
|
swap_pointers(&queue_item->title, &metadata->title);
|
||||||
|
if (metadata->album)
|
||||||
|
swap_pointers(&queue_item->album, &metadata->album);
|
||||||
|
if (metadata->genre)
|
||||||
|
swap_pointers(&queue_item->genre, &metadata->genre);
|
||||||
|
if (metadata->artwork_url)
|
||||||
|
swap_pointers(&queue_item->artwork_url, &metadata->artwork_url);
|
||||||
|
if (metadata->song_length)
|
||||||
|
queue_item->song_length = metadata->song_length;
|
||||||
|
|
||||||
|
ret = db_queue_update_item(queue_item);
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
DPRINTF(E_LOG, L_PLAYER, "Database error while updating queue with new metadata\n");
|
||||||
|
goto out_free_queueitem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
o_metadata = outputs_metadata_prepare(metadata->item_id);
|
o_metadata = outputs_metadata_prepare(metadata->item_id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user