[vlc-devel] [PATCH 3/3] medialib: factorise history retrieval calls

Pierre Lamot pierre at videolabs.io
Wed Dec 9 12:52:07 CET 2020


---
 modules/misc/medialibrary/medialib.cpp | 63 +++++++++++---------------
 1 file changed, 26 insertions(+), 37 deletions(-)

diff --git a/modules/misc/medialibrary/medialib.cpp b/modules/misc/medialibrary/medialib.cpp
index 3cd342f833..2db89a39cc 100644
--- a/modules/misc/medialibrary/medialib.cpp
+++ b/modules/misc/medialibrary/medialib.cpp
@@ -861,69 +861,58 @@ int MediaLibrary::List( int listQuery, const vlc_ml_query_params_t* params, va_l
         case VLC_ML_LIST_PLAYLISTS:
         case VLC_ML_COUNT_PLAYLISTS:
             return listPlaylist( listQuery, paramsPtr, psz_pattern, nbItems, offset, args );
-        case VLC_ML_LIST_HISTORY:
         case VLC_ML_COUNT_HISTORY:
+        case VLC_ML_LIST_HISTORY:
+        case VLC_ML_COUNT_HISTORY_BY_TYPE:
+        case VLC_ML_LIST_HISTORY_BY_TYPE:
+        case VLC_ML_COUNT_STREAM_HISTORY:
+        case VLC_ML_LIST_STREAM_HISTORY:
         {
-            auto query = m_ml->history();
-            if ( query == nullptr )
-                return VLC_EGENERIC;
+            medialibrary::Query<medialibrary::IMedia> query;
 
             switch ( listQuery )
             {
-            case VLC_ML_LIST_HISTORY:
-                *va_arg( args, vlc_ml_media_list_t**) =
-                        ml_convert_list<vlc_ml_media_list_t, vlc_ml_media_t>(
-                            query->items( nbItems, offset ) );
-                return VLC_SUCCESS;
             case VLC_ML_COUNT_HISTORY:
-                *va_arg( args, size_t* ) = query->count();
-                return VLC_SUCCESS;
+            case VLC_ML_LIST_HISTORY:
+                query = m_ml->history();
+                break;
+            case VLC_ML_COUNT_HISTORY_BY_TYPE:
+            case VLC_ML_LIST_HISTORY_BY_TYPE:
+            {
+                auto  type = va_arg(args, int);
+                query = m_ml->history(static_cast<medialibrary::IMedia::Type>( type ));
+                break;
+            }
+            case VLC_ML_COUNT_STREAM_HISTORY:
+            case VLC_ML_LIST_STREAM_HISTORY:
+                query = m_ml->streamHistory();
+                break;
             default:
                 vlc_assert_unreachable();
             }
-        }
-        case VLC_ML_COUNT_HISTORY_BY_TYPE:
-        case VLC_ML_LIST_HISTORY_BY_TYPE:
-        {
-            auto  type = va_arg(args, int);
-            auto query = m_ml->history(static_cast<medialibrary::IMedia::Type>( type ));
+
             if ( query == nullptr )
                 return VLC_EGENERIC;
 
             switch ( listQuery )
             {
+            case VLC_ML_LIST_HISTORY:
             case VLC_ML_LIST_HISTORY_BY_TYPE:
+            case VLC_ML_LIST_STREAM_HISTORY:
                 *va_arg( args, vlc_ml_media_list_t**) =
                         ml_convert_list<vlc_ml_media_list_t, vlc_ml_media_t>(
                             query->items( nbItems, offset ) );
                 return VLC_SUCCESS;
+            case VLC_ML_COUNT_HISTORY:
             case VLC_ML_COUNT_HISTORY_BY_TYPE:
+            case VLC_ML_COUNT_STREAM_HISTORY:
                 *va_arg( args, size_t* ) = query->count();
                 return VLC_SUCCESS;
             default:
                 vlc_assert_unreachable();
             }
         }
-        case VLC_ML_LIST_STREAM_HISTORY:
-        case VLC_ML_COUNT_STREAM_HISTORY:
-        {
-            auto query = m_ml->streamHistory();
-            if ( query == nullptr )
-                return VLC_EGENERIC;
-            switch ( listQuery )
-            {
-                case VLC_ML_LIST_STREAM_HISTORY:
-                    *va_arg( args, vlc_ml_media_list_t**) =
-                            ml_convert_list<vlc_ml_media_list_t, vlc_ml_media_t>(
-                                query->items( nbItems, offset ) );
-                    return VLC_SUCCESS;
-                case VLC_ML_COUNT_STREAM_HISTORY:
-                    *va_arg( args, size_t* ) = query->count();
-                    return VLC_SUCCESS;
-                default:
-                    vlc_assert_unreachable();
-            }
-        }
+
     }
     return VLC_SUCCESS;
 }
-- 
2.25.1



More information about the vlc-devel mailing list