add async call on main
This commit is contained in:
@@ -13,6 +13,21 @@ public:
|
||||
QFuture<std::function<void()>::result_type> future =
|
||||
QtConcurrent::run(threadPool, lambda);
|
||||
}
|
||||
|
||||
template <typename Function>
|
||||
static void ensureRunInMain(Function &&function) {
|
||||
struct Event : public QEvent {
|
||||
using DecayedFunction = typename std::decay<Function>::type;
|
||||
DecayedFunction decayedFunction;
|
||||
Event(DecayedFunction &&decayedFunction)
|
||||
: QEvent(QEvent::None), decayedFunction(std::move(decayedFunction)) {}
|
||||
Event(const DecayedFunction &decayedFunction)
|
||||
: QEvent(QEvent::None), decayedFunction(decayedFunction) {}
|
||||
~Event() { decayedFunction(); }
|
||||
};
|
||||
QCoreApplication::postEvent(qApp,
|
||||
new Event(std::forward<Function>(function)));
|
||||
}
|
||||
};
|
||||
|
||||
#endif // ASYNC_CALL_H
|
||||
|
Reference in New Issue
Block a user