summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/CMakeLists.txt1
-rw-r--r--src/corelib/thread/qbasicfuturewatcher.cpp80
-rw-r--r--src/corelib/thread/qbasicfuturewatcher.h39
-rw-r--r--src/corelib/thread/qfuture_impl.h1
-rw-r--r--src/corelib/thread/qfutureinterface.cpp82
-rw-r--r--src/corelib/thread/qfutureinterface.h4
6 files changed, 83 insertions, 124 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt
index 40eb758d4f8..f2da2c2b109 100644
--- a/src/corelib/CMakeLists.txt
+++ b/src/corelib/CMakeLists.txt
@@ -700,7 +700,6 @@ qt_internal_extend_target(Core CONDITION QT_FEATURE_thread AND LINUX
qt_internal_extend_target(Core CONDITION QT_FEATURE_future
SOURCES
thread/qexception.cpp thread/qexception.h
- thread/qbasicfuturewatcher.cpp thread/qbasicfuturewatcher.h
thread/qfuture.h
thread/qfuture_impl.h
thread/qfutureinterface.cpp thread/qfutureinterface.h thread/qfutureinterface_p.h
diff --git a/src/corelib/thread/qbasicfuturewatcher.cpp b/src/corelib/thread/qbasicfuturewatcher.cpp
deleted file mode 100644
index 2602995e8fa..00000000000
--- a/src/corelib/thread/qbasicfuturewatcher.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
-
-#include "qbasicfuturewatcher.h"
-#include "qcoreapplication.h"
-#include "qfutureinterface.h"
-#include "qfutureinterface_p.h"
-
-#include <QtCore/private/qobject_p.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace QtPrivate {
-
-class QBasicFutureWatcherPrivate : public QObjectPrivate, QFutureCallOutInterface
-{
-public:
- Q_DECLARE_PUBLIC(QBasicFutureWatcher)
-
- QFutureInterfaceBase future;
-
- void postCallOutEvent(const QFutureCallOutEvent &event) override;
- void callOutInterfaceDisconnected() override;
-};
-
-void QBasicFutureWatcherPrivate::postCallOutEvent(const QFutureCallOutEvent &event)
-{
- Q_Q(QBasicFutureWatcher);
- if (q->thread() == QThread::currentThread()) {
- // If we are in the same thread, don't queue up anything.
- std::unique_ptr<QFutureCallOutEvent> clonedEvent(event.clone());
- QCoreApplication::sendEvent(q, clonedEvent.get());
- } else {
- QCoreApplication::postEvent(q, event.clone());
- }
-}
-
-void QBasicFutureWatcherPrivate::callOutInterfaceDisconnected()
-{
- Q_Q(QBasicFutureWatcher);
- QCoreApplication::removePostedEvents(q, QEvent::FutureCallOut);
-}
-
-/*
- * QBasicFutureWatcher is a more lightweight version of QFutureWatcher for internal use
- */
-QBasicFutureWatcher::QBasicFutureWatcher(QObject *parent)
- : QObject(*new QBasicFutureWatcherPrivate, parent)
-{
-}
-
-QBasicFutureWatcher::~QBasicFutureWatcher()
-{
- Q_D(QBasicFutureWatcher);
- d->future.d->disconnectOutputInterface(d);
-}
-
-void QBasicFutureWatcher::setFuture(QFutureInterfaceBase &fi)
-{
- Q_D(QBasicFutureWatcher);
- d->future = fi;
- d->future.d->connectOutputInterface(d);
-}
-
-bool QtPrivate::QBasicFutureWatcher::event(QEvent *event)
-{
- if (event->type() == QEvent::FutureCallOut) {
- QFutureCallOutEvent *callOutEvent = static_cast<QFutureCallOutEvent *>(event);
- if (callOutEvent->callOutType == QFutureCallOutEvent::Finished)
- emit finished();
- return true;
- }
- return QObject::event(event);
-}
-
-} // namespace QtPrivate
-
-QT_END_NAMESPACE
-
-#include "moc_qbasicfuturewatcher.cpp"
diff --git a/src/corelib/thread/qbasicfuturewatcher.h b/src/corelib/thread/qbasicfuturewatcher.h
deleted file mode 100644
index 49db7284e70..00000000000
--- a/src/corelib/thread/qbasicfuturewatcher.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (C) 2023 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
-
-#ifndef QBASICFUTUREWATCHER_H
-#define QBASICFUTUREWATCHER_H
-
-#include <QtCore/qobject.h>
-
-QT_REQUIRE_CONFIG(future);
-
-QT_BEGIN_NAMESPACE
-
-class QFutureInterfaceBase;
-
-namespace QtPrivate {
-
-class QBasicFutureWatcherPrivate;
-
-class Q_CORE_EXPORT QBasicFutureWatcher : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QBasicFutureWatcher)
-public:
- explicit QBasicFutureWatcher(QObject *parent = nullptr);
- ~QBasicFutureWatcher() override;
-
- void setFuture(QFutureInterfaceBase &fi);
-
- bool event(QEvent *event) override;
-
-Q_SIGNALS:
- void finished();
-};
-
-}
-
-QT_END_NAMESPACE
-
-#endif // QBASICFUTUREWATCHER_H
diff --git a/src/corelib/thread/qfuture_impl.h b/src/corelib/thread/qfuture_impl.h
index d8fe946b923..8f0b2821635 100644
--- a/src/corelib/thread/qfuture_impl.h
+++ b/src/corelib/thread/qfuture_impl.h
@@ -11,7 +11,6 @@
#endif
#include <QtCore/qglobal.h>
-#include <QtCore/qbasicfuturewatcher.h>
#include <QtCore/qfutureinterface.h>
#include <QtCore/qthreadpool.h>
#include <QtCore/qexception.h>
diff --git a/src/corelib/thread/qfutureinterface.cpp b/src/corelib/thread/qfutureinterface.cpp
index de936005c34..d8aeb76951c 100644
--- a/src/corelib/thread/qfutureinterface.cpp
+++ b/src/corelib/thread/qfutureinterface.cpp
@@ -4,9 +4,9 @@
// qfutureinterface.h included from qfuture.h
#include "qfuture.h"
#include "qfutureinterface_p.h"
-#include "qbasicfuturewatcher.h"
#include <QtCore/qatomic.h>
+#include <QtCore/qcoreapplication.h>
#include <QtCore/qthread.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/private/qsimd_p.h> // for qYieldCpu()
@@ -45,6 +45,84 @@ const auto suspendingOrSuspended =
} // unnamed namespace
+class QBasicFutureWatcherPrivate;
+class QBasicFutureWatcher : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QBasicFutureWatcher)
+public:
+ explicit QBasicFutureWatcher(QObject *parent = nullptr);
+ ~QBasicFutureWatcher() override;
+
+ void setFuture(QFutureInterfaceBase &fi);
+
+ bool event(QEvent *event) override;
+
+Q_SIGNALS:
+ void finished();
+};
+
+class QBasicFutureWatcherPrivate : public QObjectPrivate, QFutureCallOutInterface
+{
+public:
+ Q_DECLARE_PUBLIC(QBasicFutureWatcher)
+
+ QFutureInterfaceBase future;
+
+ void postCallOutEvent(const QFutureCallOutEvent &event) override;
+ void callOutInterfaceDisconnected() override;
+};
+
+void QBasicFutureWatcherPrivate::postCallOutEvent(const QFutureCallOutEvent &event)
+{
+ Q_Q(QBasicFutureWatcher);
+ if (q->thread() == QThread::currentThread()) {
+ // If we are in the same thread, don't queue up anything.
+ std::unique_ptr<QFutureCallOutEvent> clonedEvent(event.clone());
+ QCoreApplication::sendEvent(q, clonedEvent.get());
+ } else {
+ QCoreApplication::postEvent(q, event.clone());
+ }
+}
+
+void QBasicFutureWatcherPrivate::callOutInterfaceDisconnected()
+{
+ Q_Q(QBasicFutureWatcher);
+ QCoreApplication::removePostedEvents(q, QEvent::FutureCallOut);
+}
+
+/*
+ * QBasicFutureWatcher is a more lightweight version of QFutureWatcher for internal use
+ */
+QBasicFutureWatcher::QBasicFutureWatcher(QObject *parent)
+ : QObject(*new QBasicFutureWatcherPrivate, parent)
+{
+}
+
+QBasicFutureWatcher::~QBasicFutureWatcher()
+{
+ Q_D(QBasicFutureWatcher);
+ d->future.d->disconnectOutputInterface(d);
+}
+
+void QBasicFutureWatcher::setFuture(QFutureInterfaceBase &fi)
+{
+ Q_D(QBasicFutureWatcher);
+ d->future = fi;
+ d->future.d->connectOutputInterface(d);
+}
+
+bool QBasicFutureWatcher::event(QEvent *event)
+{
+ if (event->type() == QEvent::FutureCallOut) {
+ QFutureCallOutEvent *callOutEvent = static_cast<QFutureCallOutEvent *>(event);
+ if (callOutEvent->callOutType == QFutureCallOutEvent::Finished)
+ emit finished();
+ return true;
+ }
+ return QObject::event(event);
+}
+
void QtPrivate::watchContinuationImpl(const QObject *context, QSlotObjectBase *slotObj,
QFutureInterfaceBase &fi)
{
@@ -942,3 +1020,5 @@ QFuture<void> makeReadyVoidFuture()
} // namespace QtFuture
QT_END_NAMESPACE
+
+#include "qfutureinterface.moc"
diff --git a/src/corelib/thread/qfutureinterface.h b/src/corelib/thread/qfutureinterface.h
index 4db3ebb8596..151584e66bc 100644
--- a/src/corelib/thread/qfutureinterface.h
+++ b/src/corelib/thread/qfutureinterface.h
@@ -39,8 +39,8 @@ template<class Function, class ResultType>
class FailureHandler;
#endif
-class QBasicFutureWatcher;
}
+class QBasicFutureWatcher;
class Q_CORE_EXPORT QFutureInterfaceBase
{
@@ -178,7 +178,7 @@ private:
friend class QtPrivate::FailureHandler;
#endif
- friend class QtPrivate::QBasicFutureWatcher;
+ friend class QBasicFutureWatcher;
template<class T>
friend class QPromise;