mpd: make GetRecursiveDirectory return SongIterator
This commit is contained in:
@@ -259,24 +259,20 @@ void MediaLibrary::update()
|
||||
Albums.clearSearchResults();
|
||||
m_albums_update_request = false;
|
||||
std::map<std::tuple<std::string, std::string, std::string>, time_t> albums;
|
||||
MPD::ItemIterator item = Mpd.GetDirectoryRecursive("/"), end;
|
||||
for (; item != end; ++item)
|
||||
for (MPD::SongIterator s = Mpd.GetDirectoryRecursive("/"), end; s != end; ++s)
|
||||
{
|
||||
if (item->type() != MPD::Item::Type::Song)
|
||||
continue;
|
||||
unsigned idx = 0;
|
||||
const MPD::Song &s = item->song();
|
||||
std::string tag = s.get(Config.media_lib_primary_tag, idx);
|
||||
std::string tag = s->get(Config.media_lib_primary_tag, idx);
|
||||
do
|
||||
{
|
||||
auto key = std::make_tuple(tag, s.getAlbum(), s.getDate());
|
||||
auto key = std::make_tuple(tag, s->getAlbum(), s->getDate());
|
||||
auto it = albums.find(key);
|
||||
if (it == albums.end())
|
||||
albums[key] = s.getMTime();
|
||||
albums[key] = s->getMTime();
|
||||
else
|
||||
it->second = s.getMTime();
|
||||
it->second = s->getMTime();
|
||||
}
|
||||
while (!(tag = s.get(Config.media_lib_primary_tag, ++idx)).empty());
|
||||
while (!(tag = s->get(Config.media_lib_primary_tag, ++idx)).empty());
|
||||
}
|
||||
withUnfilteredMenuReapplyFilter(Albums, [this, &albums]() {
|
||||
size_t idx = 0;
|
||||
@@ -308,23 +304,19 @@ void MediaLibrary::update()
|
||||
std::map<std::string, time_t> tags;
|
||||
if (Config.media_library_sort_by_mtime)
|
||||
{
|
||||
MPD::ItemIterator item = Mpd.GetDirectoryRecursive("/"), end;
|
||||
for (; item != end; ++item)
|
||||
for (MPD::SongIterator s = Mpd.GetDirectoryRecursive("/"), end; s != end; ++s)
|
||||
{
|
||||
if (item->type() != MPD::Item::Type::Song)
|
||||
continue;
|
||||
unsigned idx = 0;
|
||||
const MPD::Song &s = item->song();
|
||||
std::string tag = s.get(Config.media_lib_primary_tag, idx);
|
||||
std::string tag = s->get(Config.media_lib_primary_tag, idx);
|
||||
do
|
||||
{
|
||||
auto it = tags.find(tag);
|
||||
if (it == tags.end())
|
||||
tags[tag] = s.getMTime();
|
||||
tags[tag] = s->getMTime();
|
||||
else
|
||||
it->second = std::max(it->second, s.getMTime());
|
||||
it->second = std::max(it->second, s->getMTime());
|
||||
}
|
||||
while (!(tag = s.get(Config.media_lib_primary_tag, ++idx)).empty());
|
||||
while (!(tag = s->get(Config.media_lib_primary_tag, ++idx)).empty());
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user