20#include "qplatformdefs.h"
21#include "QtCore/qthread.h"
22#include "QtCore/qmutex.h"
23#include "QtCore/qstack.h"
25#include "QtCore/qwaitcondition.h"
27#include "QtCore/qmap.h"
28#include "QtCore/qcoreapplication.h"
29#include "private/qobject_p.h"
103 using List = std::vector<QObject *>;
107 data(encodeBindingStatus(status)) {}
127 const auto d =
data.load(std::memory_order_acquire);
137 return decodeList(
data.load(std::memory_order_relaxed));
144 return reinterpret_cast<List *
>(
ptr & ~1);
159 std::atomic<quintptr>
data;
166class Q_CORE_EXPORT QDaemonThread :
public QThread
189 std::atomic<bool> interruptionRequested;
195 std::underlying_type_t<QThread::Priority> priority;
201 static void finish(
void *);
206 static unsigned int __stdcall
start(
void *)
noexcept;
207 static void finish(
void *,
bool lockAnyway =
true) noexcept;
212 bool terminationEnabled, terminatePending;
215 static int idealThreadCount;
235 return m_statusOrPendingObjects.bindingStatus();
246#ifndef Q_OS_INTEGRITY
338 : threadData(threadData)
\macro Q_ATOMIC_INTnn_IS_SUPPORTED
Type loadRelaxed() const noexcept
static QCoreApplication * instance() noexcept
Returns a pointer to the application's QCoreApplication (or QGuiApplication/QApplication) instance.
static void postEvent(QObject *receiver, QEvent *event, int priority=Qt::NormalEventPriority)
iterator insert(qsizetype i, parameter_type t)
void append(parameter_type t)
void addEvent(const QPostEvent &ev)
qsizetype insertionOffset
QPostEvent(QObject *r, QEvent *e, int p)
QScopedScopeLevelCounter(QThreadData *threadData)
~QScopedScopeLevelCounter()
\macro QT_RESTRICTED_CAST_FROM_ASCII
static Q_AUTOTEST_EXPORT QThreadData * current(bool createIfNecessary=true)
QStack< QEventLoop * > eventLoops
QAtomicPointer< QAbstractEventDispatcher > eventDispatcher
bool requiresCoreApplication
static void clearCurrentThreadData()
QAtomicPointer< void > threadId
static QThreadData * get2(QThread *thread)
QAbstractEventDispatcher * ensureEventDispatcher()
QPostEventList postEventList
bool hasEventDispatcher() const
QAtomicPointer< QThread > thread
QAbstractEventDispatcher * createEventDispatcher()
static void setCurrentThread(QThread *)
static QAbstractEventDispatcher * createEventDispatcher(QThreadData *data)
void removeObjectWithPendingBindingStatusChange(QObject *)
QBindingStatus * m_bindingStatus
QBindingStatus * bindingStatus()
QBindingStatus * addObjectWithPendingBindingStatusChange(QObject *)
BindingStatusOrList(List *list) noexcept
List * list() const noexcept
static bool isBindingStatus(quintptr data) noexcept
static bool isNull(quintptr data) noexcept
void removeObject(QObject *object)
void setStatusAndClearList(QBindingStatus *status) noexcept
constexpr BindingStatusOrList() noexcept
QBindingStatus * addObjectUnlessAlreadyStatus(QObject *object)
BindingStatusOrList(QBindingStatus *status) noexcept
QBindingStatus * bindingStatus() const noexcept
std::vector< QObject * > List
static bool isList(quintptr data) noexcept
myinstance setPriority(MyClass::VeryHigh)
Combined button and popup list for selecting options.
static ControlElement< T > * ptr(QWidget *widget)
GLuint64 GLenum void * handle
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
#define Q_ASSERT_X(cond, x, msg)
#define Q_AUTOTEST_EXPORT
bool operator<(const QPostEvent &first, const QPostEvent &second)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent