aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xbmc/PlayListPlayer.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/xbmc/PlayListPlayer.cpp b/xbmc/PlayListPlayer.cpp
index abb080c3a5..a556ac2c19 100644
--- a/xbmc/PlayListPlayer.cpp
+++ b/xbmc/PlayListPlayer.cpp
@@ -25,8 +25,10 @@
#include "interfaces/AnnouncementManager.h"
#include "input/Key.h"
#include "URL.h"
+#include "utils/URIUtils.h"
#include "messaging/ApplicationMessenger.h"
#include "filesystem/VideoDatabaseFile.h"
+#include "filesystem/PluginDirectory.h"
#include "messaging/helpers/DialogOKHelper.h"
#include "ServiceBroker.h"
@@ -892,6 +894,12 @@ void PLAYLIST::CPlayListPlayer::OnApplicationMessage(KODI::MESSAGING::ThreadMess
if (list->Size() == 1 && !(*list)[0]->IsPlayList())
{
CFileItemPtr item = (*list)[0];
+ // if the item is a plugin we need to resolve the URL to ensure the infotags are filled.
+ // resolve only for a maximum of 5 times to avoid deadlocks (plugin:// paths can resolve to plugin:// paths)
+ for (int i = 0; URIUtils::IsPlugin(item->GetDynPath()) && i < 5; ++i)
+ {
+ XFILE::CPluginDirectory::GetPluginResult(item->GetDynPath(), *item, true);
+ }
if (item->IsAudio() || item->IsVideo())
Play(item, pMsg->strParam);
else