From c76dd72dc6b78c34edb4dfc5196bb93a51cc488f Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 21 Nov 2019 15:51:34 +0100 Subject: Add a constructor for QRunnable from anonymous functions This makes it easier to create one without having to create a derivative class. The patch also adds a path to avoid using QRunnable directly in QThreadPool. Change-Id: I9caa7dabb6f641b547d4771c863aa6ab7f01b704 Reviewed-by: Thiago Macieira Reviewed-by: Sona Kurazyan --- src/corelib/thread/qrunnable.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/corelib/thread/qrunnable.cpp') diff --git a/src/corelib/thread/qrunnable.cpp b/src/corelib/thread/qrunnable.cpp index bd0a32b53d..58a764d407 100644 --- a/src/corelib/thread/qrunnable.cpp +++ b/src/corelib/thread/qrunnable.cpp @@ -114,4 +114,31 @@ QRunnable::~QRunnable() \sa autoDelete(), QThreadPool */ +class FunctionRunnable : public QRunnable +{ + std::function m_functor; +public: + FunctionRunnable(std::function functor) : m_functor(std::move(functor)) + { + } + void run() override + { + m_functor(); + } +}; + +/*! + \since 5.15 + + Creates a QRunnable that calls \a fun in run(). + + Auto-deletion is enabled by default. + + \sa run(), autoDelete() +*/ +QRunnable *QRunnable::create(std::function fun) +{ + return new FunctionRunnable(std::move(fun)); +} + QT_END_NAMESPACE -- cgit v1.2.3