15#include "private/qcoreapplication_p.h" 
   49    : _ref(initialRefCount), loopLevel(0), scopeLevel(0),
 
   51      quitNow(
false), canWait(true), isAdopted(
false), requiresCoreApplication(true)
 
   87            --pe.
receiver->d_func()->postedEvents;
 
   88            pe.
event->m_posted = 
false;
 
  129    d_func()->running = 
true;
 
  132    d_func()->m_statusOrPendingObjects.setStatusAndClearList(
 
  147    qFatal(
"QAdoptedThread::run(): Internal error, this implementation should never be called.");
 
  156      isInFinish(
false), interruptionRequested(
false),
 
  157      exited(
false), returnCode(-1),
 
  158      stackSize(0), priority(
QThread::InheritPriority), 
data(
d)
 
  166#elif defined(Q_OS_RTEMS) 
  167    Q_CONSTINIT 
static bool envStackSizeOk = 
false;
 
  173#if defined (Q_OS_WIN) 
  177    terminationEnabled = 
true;
 
  178    terminatePending = 
false;
 
  190    delete m_statusOrPendingObjects.list();
 
  408    return data->thread.loadAcquire();
 
  423    d->data->thread.storeRelaxed(
this);
 
  434    d->data->thread.storeRelaxed(
this);
 
  465        if (
d->running && !
d->finished && !
d->data->isAdopted)
 
  466            qFatal(
"QThread: Destroyed while thread is still running");
 
  468        d->data->thread.storeRelease(
nullptr);
 
  482    return d->finished || 
d->isInFinish;
 
  495    return d->running && !
d->isInFinish;
 
  515               "cannot change stack size while the thread is running");
 
  541    if (
auto pendingObjects = 
list()) {
 
  542        for (
auto obj: *pendingObjects)
 
  544        delete pendingObjects;
 
  547    data.store(encodeBindingStatus(status), std::memory_order_release);
 
  569    d->m_statusOrPendingObjects.setStatusAndClearList(status);
 
  570    d->data->quitNow = 
false;
 
  573        return d->returnCode;
 
  578    int returnCode = eventLoop.
exec();
 
  600        objectList = 
new List();
 
  601        objectList->reserve(8);
 
  602        data.store(encodeList(objectList), std::memory_order_relaxed);
 
  604    objectList->push_back(
object);
 
  617    auto it = std::remove(objectList->begin(), objectList->end(), 
object);
 
  618    objectList->erase(
it, objectList->
end());
 
  623    if (
auto status = m_statusOrPendingObjects.bindingStatus())
 
  626    return m_statusOrPendingObjects.addObjectUnlessAlreadyStatus(
obj);
 
  631    if (m_statusOrPendingObjects.bindingStatus())
 
  634    m_statusOrPendingObjects.removeObject(
obj);
 
  665    d->returnCode = returnCode;
 
  666    d->data->quitNow = 
true;
 
  667    for (
int i = 0; 
i < 
d->data->eventLoops.size(); ++
i) {
 
  669        eventLoop->
exit(returnCode);
 
  724        qWarning(
"QThread::setPriority: Argument cannot be InheritPriority");
 
  730        qWarning(
"QThread::setPriority: Cannot set priority, thread is not running");
 
  733    d->setPriority(priority);
 
  750    return Priority(
d->priority & 0xffff);
 
  896    return d->data->eventLoops.size();
 
  905    d->data->thread.storeRelaxed(
this);
 
  943    d->data->quitNow = 
true;
 
  944    for (
int i = 0; 
i < 
d->data->eventLoops.size(); ++
i) {
 
  946        eventLoop->
exit(returnCode);
 
  961Qt::HANDLE QThread::currentThreadIdImpl() noexcept
 
 1007    if (!
data && createIfNecessary) {
 
 1012        data->isAdopted = 
true;
 
 1033    d->data->thread.storeRelaxed(
this);
 
 1042    data->thread.storeRelease(
nullptr); 
 
 1067    return d->data->eventDispatcher.loadRelaxed();
 
 1085    if (
d->data->hasEventDispatcher()) {
 
 1086        qWarning(
"QThread::setEventDispatcher: An event dispatcher has already been created for this thread");
 
 1092            qWarning(
"QThread::setEventDispatcher: Could not move event dispatcher to target thread");
 
 1104#if QT_CONFIG(thread) 
 1135        qWarning(
"QThread::requestInterruption has no effect on the main thread");
 
 1140    if (!
d->running || 
d->finished || 
d->isInFinish)
 
 1142    d->interruptionRequested.store(
true, std::memory_order_relaxed);
 
 1175    if (!
d->interruptionRequested.load(std::memory_order_relaxed))
 
 1179    return d->running && !
d->finished && !
d->isInFinish;
 
 1204#if QT_CONFIG(cxx11_future) 
 1205class QThreadCreateThread : 
public QThread 
 1208    explicit QThreadCreateThread(std::future<void> &&
future)
 
 1213    ~QThreadCreateThread()
 
 1226    std::future<void> m_future;
 
 1229QThread *QThread::createThreadImpl(std::future<void> &&
future)
 
 1231    return new QThreadCreateThread(std::move(
future));
 
 1253QDaemonThread::~QDaemonThread()
 
 1261#include "moc_qthread.cpp" 
QAdoptedThread(QThreadData *data=nullptr)
 
T loadRelaxed() const noexcept
 
Type loadAcquire() const noexcept
 
void storeRelease(Type newValue) noexcept
 
static QBasicAtomicPointer< QThread > theMainThread
 
int exec(ProcessEventsFlags flags=AllEvents)
Enters the main event loop and waits until exit() is called.
 
void exit(int returnCode=0)
Tells the event loop to exit with a return code.
 
qsizetype size() const noexcept
 
bool isEmpty() const noexcept
 
const QPostEvent & constLast() const noexcept
 
iterator insert(qsizetype i, parameter_type t)
 
const_reference at(qsizetype i) const noexcept
 
void append(parameter_type t)
 
void moveToThread(QThread *thread)
Changes the thread affinity for this object and its children.
 
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
 
virtual bool event(QEvent *event)
This virtual function receives events to an object and should return true if the event e was recogniz...
 
QThread * thread() const
Returns the thread in which the object lives.
 
void addEvent(const QPostEvent &ev)
 
qsizetype insertionOffset
 
static Q_AUTOTEST_EXPORT QThreadData * current(bool createIfNecessary=true)
 
QAtomicPointer< QAbstractEventDispatcher > eventDispatcher
 
QThreadData(int initialRefCount=1)
 
bool requiresCoreApplication
 
static void clearCurrentThreadData()
 
QPostEventList postEventList
 
QAtomicPointer< QThread > thread
 
QAbstractEventDispatcher * createEventDispatcher()
 
static QAbstractEventDispatcher * createEventDispatcher(QThreadData *data)
 
QThreadPrivate(QThreadData *d=nullptr)
 
void removeObjectWithPendingBindingStatusChange(QObject *)
 
QBindingStatus * addObjectWithPendingBindingStatusChange(QObject *)
 
bool isInterruptionRequested() const
 
void start(Priority=InheritPriority)
 
QAbstractEventDispatcher * eventDispatcher() const
 
static int idealThreadCount() noexcept
 
bool event(QEvent *event) override
This virtual function receives events to an object and should return true if the event e was recogniz...
 
static QThread * currentThread()
 
static void yieldCurrentThread()
 
bool wait(QDeadlineTimer deadline=QDeadlineTimer(QDeadlineTimer::Forever))
 
QThread(QObject *parent=nullptr)
 
Priority priority() const
 
void finished(QPrivateSignal)
 
void setPriority(Priority priority)
 
void requestInterruption()
 
void setStackSize(uint stackSize)
 
void setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
 
void started(QPrivateSignal)
 
List * list() const noexcept
 
void removeObject(QObject *object)
 
void setStatusAndClearList(QBindingStatus *status) noexcept
 
QBindingStatus * addObjectUnlessAlreadyStatus(QObject *object)
 
QBindingStatus * bindingStatus() const noexcept
 
std::vector< QObject * > List
 
QSet< QString >::iterator it
 
Combined button and popup list for selecting options.
 
Q_AUTOTEST_EXPORT QBindingStatus * getBindingStatus(QBindingStatusAccessToken)
 
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
 
static QDBusError::ErrorType get(const char *name)
 
static Q_CONSTINIT QBasicAtomicInt running
 
GLuint64 GLenum void * handle
 
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
 
#define Q_ASSERT_X(cond, x, msg)
 
Q_CORE_EXPORT int qEnvironmentVariableIntValue(const char *varName, bool *ok=nullptr) noexcept
 
QFuture< void > future
[5]
 
QDeadlineTimer deadline(30s)
 
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent