diff options
author | enen92 <92enen@gmail.com> | 2022-07-05 15:35:09 +0100 |
---|---|---|
committer | enen92 <92enen@gmail.com> | 2022-07-06 09:38:51 +0100 |
commit | db48e286808aaea48ab24704c83ae3a7c130ec04 (patch) | |
tree | 670114644ead4ed719a39d1fff69c985f0ddc8e3 | |
parent | c57641461bbe6b86f3387deea7a9f80d2a8131fa (diff) |
[infoscanner][discs] Check .nomedia before stacking
-rw-r--r-- | xbmc/FileItem.cpp | 7 | ||||
-rw-r--r-- | xbmc/FileItem.h | 1 | ||||
-rw-r--r-- | xbmc/video/VideoInfoScanner.cpp | 6 |
3 files changed, 14 insertions, 0 deletions
diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp index 03c1c12cc7..091c4ce1a5 100644 --- a/xbmc/FileItem.cpp +++ b/xbmc/FileItem.cpp @@ -2268,6 +2268,13 @@ void CFileItemList::Remove(CFileItem* pItem) } } +VECFILEITEMS::iterator CFileItemList::erase(VECFILEITEMS::iterator first, + VECFILEITEMS::iterator last) +{ + std::unique_lock<CCriticalSection> lock(m_lock); + return m_items.erase(first, last); +} + void CFileItemList::Remove(int iItem) { std::unique_lock<CCriticalSection> lock(m_lock); diff --git a/xbmc/FileItem.h b/xbmc/FileItem.h index 4286bac23f..99cb8f89cf 100644 --- a/xbmc/FileItem.h +++ b/xbmc/FileItem.h @@ -808,6 +808,7 @@ public: VECFILEITEMS::iterator begin() { return m_items.begin(); } VECFILEITEMS::iterator end() { return m_items.end(); } + VECFILEITEMS::iterator erase(VECFILEITEMS::iterator first, VECFILEITEMS::iterator last); VECFILEITEMS::const_iterator begin() const { return m_items.begin(); } VECFILEITEMS::const_iterator end() const { return m_items.end(); } VECFILEITEMS::const_iterator cbegin() const { return m_items.cbegin(); } diff --git a/xbmc/video/VideoInfoScanner.cpp b/xbmc/video/VideoInfoScanner.cpp index f5f86f14d7..c402a9c9c0 100644 --- a/xbmc/video/VideoInfoScanner.cpp +++ b/xbmc/video/VideoInfoScanner.cpp @@ -298,6 +298,12 @@ namespace VIDEO { // need to fetch the folder CDirectory::GetDirectory(strDirectory, items, CServiceBroker::GetFileExtensionProvider().GetVideoExtensions(), DIR_FLAG_DEFAULTS); + // do not consider inner folders with .nomedia + items.erase(std::remove_if(items.begin(), items.end(), + [this](const CFileItemPtr& item) { + return item->m_bIsFolder && HasNoMedia(item->GetPath()); + }), + items.end()); items.Stack(); // check whether to re-use previously computed fast hash |