runOnAndroidMainThread(): optimize shared pointer use
- port from QSharedPointer to std::shared_ptr (one instead of two atomic ops per shared-pointer copy) - port to std::make_shared (one instead of two memory allocations for shared-pointer + payload creation) Change-Id: Idecef5732d181a63e6936f54204eeb7ecbdc4a0f Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit dbcbadb7ac6620fabadd173b54d292bbadcb5b58) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
9b3848c5d0
commit
662db241dd
@ -12,6 +12,7 @@
|
|||||||
#include <QtCore/qpromise.h>
|
#include <QtCore/qpromise.h>
|
||||||
#include <QtCore/qthreadpool.h>
|
#include <QtCore/qthreadpool.h>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
#include <memory>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@ -21,7 +22,7 @@ static const char qtNativeClassName[] = "org/qtproject/qt/android/QtNative";
|
|||||||
|
|
||||||
struct PendingRunnable {
|
struct PendingRunnable {
|
||||||
std::function<QVariant()> function;
|
std::function<QVariant()> function;
|
||||||
QSharedPointer<QPromise<QVariant>> promise;
|
std::shared_ptr<QPromise<QVariant>> promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
using PendingRunnables = std::deque<PendingRunnable>;
|
using PendingRunnables = std::deque<PendingRunnable>;
|
||||||
@ -161,7 +162,7 @@ QFuture<QVariant> QNativeInterface::QAndroidApplication::runOnAndroidMainThread(
|
|||||||
const std::function<QVariant()> &runnable,
|
const std::function<QVariant()> &runnable,
|
||||||
const QDeadlineTimer timeout)
|
const QDeadlineTimer timeout)
|
||||||
{
|
{
|
||||||
QSharedPointer<QPromise<QVariant>> promise(new QPromise<QVariant>());
|
auto promise = std::make_shared<QPromise<QVariant>>();
|
||||||
QFuture<QVariant> future = promise->future();
|
QFuture<QVariant> future = promise->future();
|
||||||
promise->start();
|
promise->start();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user