[vlc-commits] qt: add nodes that are already preparsed when initializing NetworkMediaModel

Pierre Lamot git at videolan.org
Mon Sep 21 10:23:50 CEST 2020


vlc | branch: master | Pierre Lamot <pierre at videolabs.io> | Mon Sep 14 17:39:33 2020 +0200| [b778d3034d4aa69321bb2205b804a3ee7ebd4ece] | committer: Pierre Lamot

qt: add nodes that are already preparsed when initializing NetworkMediaModel

  vlc_media_tree_Preparse will only notify about newly found entry. If entries
  are already in the tree they won't show up.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b778d3034d4aa69321bb2205b804a3ee7ebd4ece
---

 modules/gui/qt/network/networkmediamodel.cpp | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/modules/gui/qt/network/networkmediamodel.cpp b/modules/gui/qt/network/networkmediamodel.cpp
index ddb87b5e2b..da145e5758 100644
--- a/modules/gui/qt/network/networkmediamodel.cpp
+++ b/modules/gui/qt/network/networkmediamodel.cpp
@@ -328,7 +328,22 @@ bool NetworkMediaModel::initializeMediaSources()
         emit isIndexedChanged();
     }
 
-    vlc_media_tree_PreparseCancel( libvlc, this );
+    {
+        input_item_node_t* mediaNode = nullptr;
+        vlc_media_tree_Lock(tree);
+        vlc_media_tree_PreparseCancel( libvlc, this );
+        std::vector<InputItemPtr> itemList;
+        if (vlc_media_tree_Find( tree, m_treeItem.media.get(), &mediaNode, nullptr))
+        {
+            itemList.reserve(mediaNode->i_children);
+            for (int i = 0; i < mediaNode->i_children; i++)
+                itemList.emplace_back(mediaNode->pp_children[i]->p_item);
+        }
+        vlc_media_tree_Unlock(tree);
+        if (!itemList.empty())
+            refreshMediaList( m_treeItem.source, std::move( itemList ), true );
+    }
+
     m_preparseSem.acquire();
     vlc_media_tree_Preparse( tree, libvlc, m_treeItem.media.get(), this );
     m_parsingPending = true;



More information about the vlc-commits mailing list