diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp index 8184943a7ae71..884edc35d91de 100644 --- a/xbmc/FileItem.cpp +++ b/xbmc/FileItem.cpp @@ -1107,6 +1107,10 @@ bool CFileItem::IsFileFolder(EFileFolderType types) const if(IsInternetStream()) always_type = EFILEFOLDER_TYPE_ONCLICK; + // strm files are not browsable + if (IsType(".strm") && (types & EFILEFOLDER_TYPE_ONBROWSE)) + return false; + if(types & always_type) { if(IsSmartPlayList() diff --git a/xbmc/music/MusicUtils.cpp b/xbmc/music/MusicUtils.cpp index bbd1ba5ac4c4a..77e2d04989b27 100644 --- a/xbmc/music/MusicUtils.cpp +++ b/xbmc/music/MusicUtils.cpp @@ -902,7 +902,7 @@ bool IsItemPlayable(const CFileItem& item) if (StringUtils::StartsWith(item.GetPath(), StringUtils::Format("{}/music/", path))) return true; - if (!item.m_bIsFolder) + if (!item.m_bIsFolder && !item.HasMusicInfoTag()) { // Unknown location. Type cannot be determined for non-folder items. return false; diff --git a/xbmc/playlists/PlayList.cpp b/xbmc/playlists/PlayList.cpp index 7c038842ded31..82031bad2e36c 100644 --- a/xbmc/playlists/PlayList.cpp +++ b/xbmc/playlists/PlayList.cpp @@ -475,7 +475,7 @@ bool CPlayList::Expand(int position) for (int i = 0;isize();i++) { (*playlist)[i]->SetDynPath((*playlist)[i]->GetPath()); - (*playlist)[i]->SetPath(item->GetPath()); + (*playlist)[i]->SetPath(item->GetDynPath()); (*playlist)[i]->SetStartOffset(item->GetStartOffset()); } diff --git a/xbmc/video/VideoUtils.cpp b/xbmc/video/VideoUtils.cpp index 66a78477cb9dc..39d316832a228 100644 --- a/xbmc/video/VideoUtils.cpp +++ b/xbmc/video/VideoUtils.cpp @@ -285,23 +285,8 @@ void CAsyncGetItemsForPlaylist::GetItemsForPlaylist(const std::shared_ptrIsPlayList()) { - const std::unique_ptr playList(PLAYLIST::CPlayListFactory::Create(*item)); - if (!playList) - { - CLog::LogF(LOGERROR, "Failed to create playlist {}", item->GetPath()); - return; - } - - if (!playList->Load(item->GetPath())) - { - CLog::LogF(LOGERROR, "Failed to load playlist {}", item->GetPath()); - return; - } - - for (int i = 0; i < playList->size(); ++i) - { - GetItemsForPlaylist((*playList)[i]); - } + // just queue the playlist, it will be expanded on play + m_queuedItems.Add(item); } else if (item->IsInternetStream()) { @@ -583,7 +568,7 @@ bool IsItemPlayable(const CFileItem& item) StringUtils::StartsWith(item.GetPath(), StringUtils::Format("{}/mixed/", path))) return true; - if (!item.m_bIsFolder) + if (!item.m_bIsFolder && !item.HasVideoInfoTag()) { // Unknown location. Type cannot be determined for non-folder items. return false;