[vlc-devel] [PATCH] qt: medialib: fix compatibility with Qt < 5.15

"zhilizhao(赵志立)" quinkblack at foxmail.com
Tue Feb 23 12:47:35 UTC 2021



> On Feb 23, 2021, at 8:23 PM, Romain Vimont <rom1v at videolabs.io> wrote:
> 
> QThreadPool::start() could only be called with a QRunnable before Qt
> 5.15, not a lambda: https://doc.qt.io/qt-5/qthreadpool.html#start-1
> 
> Use the older method instead.
> ---
> modules/gui/qt/medialibrary/medialib.cpp | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/modules/gui/qt/medialibrary/medialib.cpp b/modules/gui/qt/medialibrary/medialib.cpp
> index bc5878ae0c..ffe5b1b071 100644
> --- a/modules/gui/qt/medialibrary/medialib.cpp
> +++ b/modules/gui/qt/medialibrary/medialib.cpp
> @@ -225,9 +225,18 @@ void MediaLib::insertIntoPlaylist(const size_t index, const QVariantList &itemId
> 
> void MediaLib::reload()
> {
> -    m_threadPool.start([ml = m_ml] {
> -        vlc_ml_reload_folder(ml, nullptr);
> -    });
> +    /* m_threadPool.start(lambda) is only supported since Qt 5.15 */
> +    struct Task : QRunnable {
> +        vlc_medialibrary_t *m_ml;
> +
> +        Task(vlc_medialibrary_t *ml) : m_ml(ml) {}
> +        void run() override
> +        {
> +            vlc_ml_reload_folder(m_ml, nullptr);
> +        }
> +    };
> +

From the documentation, I’m not sure whether QRunnable::autoDelete() is enabled by default or not.
https://doc.qt.io/qt-5/qrunnable.html#details

> +    m_threadPool.start(new Task(m_ml));
> }
> 
> vlc_medialibrary_t* MediaLib::vlcMl()
> -- 
> 2.30.1
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel



More information about the vlc-devel mailing list