[vlc-commits] qt: medialib: remove synchronization

Romain Vimont git at videolan.org
Thu Nov 12 15:48:09 CET 2020


vlc | branch: master | Romain Vimont <rom1v at videolabs.io> | Mon Nov  9 10:58:15 2020 +0100| [598094819aae0bb1097a6c64338ac411bd737157] | committer: Alexandre Janniaux

qt: medialib: remove synchronization

Now that the UI state is always accessed from the UI thread, locks and
atomics are not necessary anymore.

Signed-off-by: Alexandre Janniaux <ajanni at videolabs.io>

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

 modules/gui/qt/medialibrary/mlbasemodel.cpp |  1 -
 modules/gui/qt/medialibrary/mlbasemodel.hpp | 36 +++++++++--------------------
 2 files changed, 11 insertions(+), 26 deletions(-)

diff --git a/modules/gui/qt/medialibrary/mlbasemodel.cpp b/modules/gui/qt/medialibrary/mlbasemodel.cpp
index 9805e9e86b..f7f2e127e6 100644
--- a/modules/gui/qt/medialibrary/mlbasemodel.cpp
+++ b/modules/gui/qt/medialibrary/mlbasemodel.cpp
@@ -31,7 +31,6 @@ MLBaseModel::MLBaseModel(QObject *parent)
         })
     , m_need_reset( false )
 {
-    vlc_mutex_init( &m_item_lock );
     memset(&m_query_param, 0, sizeof(vlc_ml_query_params_t));
     m_query_param.b_desc = false;
     m_query_param.i_nbResults = 20; //FIXME: value for test
diff --git a/modules/gui/qt/medialibrary/mlbasemodel.hpp b/modules/gui/qt/medialibrary/mlbasemodel.hpp
index e52e7506c6..c25fb948b3 100644
--- a/modules/gui/qt/medialibrary/mlbasemodel.hpp
+++ b/modules/gui/qt/medialibrary/mlbasemodel.hpp
@@ -114,11 +114,9 @@ protected:
     std::unique_ptr<char, void(*)(void*)> m_search_pattern_cstr;
     QString m_search_pattern;
 
-    mutable vlc_mutex_t m_item_lock;
-
     std::unique_ptr<vlc_ml_event_callback_t,
                     std::function<void(vlc_ml_event_callback_t*)>> m_ml_event_handle;
-    std::atomic_bool m_need_reset;
+    bool m_need_reset;
 };
 
 /**
@@ -144,26 +142,21 @@ public:
 
     int rowCount(const QModelIndex &parent = {}) const override
     {
-        bool countHasChanged = false;
         if (parent.isValid())
             return 0;
+
+        if ( m_initialized == false )
         {
-            vlc_mutex_locker lock( &m_item_lock );
-            if ( m_initialized == false )
-            {
-                m_total_count = countTotalElements();
-                m_initialized = true;
-                countHasChanged = true;
-            }
-        }
-        if (countHasChanged)
+            m_total_count = countTotalElements();
+            m_initialized = true;
             emit countChanged( static_cast<unsigned int>(m_total_count) );
+        }
+
         return m_total_count;
     }
 
     virtual T* get(int idx) const
     {
-        vlc_mutex_locker lock( &m_item_lock );
         T* obj = item( idx );
         if (!obj)
             return nullptr;
@@ -172,20 +165,16 @@ public:
 
     void clear() override
     {
-        {
-            vlc_mutex_locker lock( &m_item_lock );
-            m_query_param.i_offset = 0;
-            m_initialized = false;
-            m_total_count = 0;
-            m_item_list.clear();
-        }
+        m_query_param.i_offset = 0;
+        m_initialized = false;
+        m_total_count = 0;
+        m_item_list.clear();
         emit countChanged( static_cast<unsigned int>(m_total_count) );
     }
 
 
     virtual QVariant getIdForIndex( QVariant index ) const override
     {
-        vlc_mutex_locker lock( &m_item_lock );
         T* obj = nullptr;
         if (index.canConvert<int>())
             obj = item( index.toInt() );
@@ -202,7 +191,6 @@ public:
     {
         QVariantList idList;
         idList.reserve(indexes.length());
-        vlc_mutex_locker lock( &m_item_lock );
         std::transform( indexes.begin(), indexes.end(),std::back_inserter(idList), [this](const QModelIndex& index) -> QVariant {
             T* obj = item( index.row() );
             if (!obj)
@@ -217,7 +205,6 @@ public:
         QVariantList idList;
 
         idList.reserve(indexes.length());
-        vlc_mutex_locker lock( &m_item_lock );
         std::transform( indexes.begin(), indexes.end(),std::back_inserter(idList), [this](const QVariant& index) -> QVariant {
             T* obj = nullptr;
             if (index.canConvert<int>())
@@ -244,7 +231,6 @@ protected:
             return nullptr;
 
         unsigned int idx = static_cast<unsigned int>(signedidx);
-        // Must be called in a locked context
         if ( m_initialized == false )
         {
             m_total_count = countTotalElements();



More information about the vlc-commits mailing list