Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qqmlthread_stub.cpp
Go to the documentation of this file.
1
// Copyright (C) 2024 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant
4
5
#
include
"qqmlthread_p.h"
6
7
#
include
<
private
/
qfieldlist_p
.
h
>
8
#
include
<
private
/
qtqmlglobal_p
.
h
>
9
10
#
include
<
QtCore
/
qcoreapplication
.
h
>
11
#
include
<
QtCore
/
qcoreevent
.
h
>
12
#
include
<
QtCore
/
qthread
.
h
>
13
14
#
if
QT_CONFIG
(
qml_type_loader_thread
)
15
#
error
"The QQmlThread stub is for the case of !qml_type_loader_thread"
16
#
endif
17
18
QT_BEGIN_NAMESPACE
19
20
class
QQmlThreadPrivate
:
public
QObject
21
{
22
public
:
23
using
MessageList
=
QFieldList
<
QQmlThread
::
Message
, &
QQmlThread
::
Message
::
next
>;
24
25
QQmlThreadPrivate
(
QQmlThread
*q) : q(q) { setObjectName(QStringLiteral(
"QQmlThread"
)); }
26
27
bool
event
(QEvent *e)
override
28
{
29
if
(e->type() == QEvent::User) {
30
m_processing
=
true
;
31
32
while
(!m_messages.isEmpty()) {
33
QQmlThread
::Message *message = m_messages.takeFirst();
34
message->call(q);
35
delete
message;
36
}
37
38
m_processing
=
false
;
39
}
40
return
QObject::event(e);
41
}
42
43
MessageList
m_messages
;
44
QQmlThread
*q =
nullptr
;
45
46
bool
m_processing
=
false
;
// Set when processing messages
47
bool
m_isRunning
=
false
;
48
};
49
50
QQmlThread
::
QQmlThread
() : d(
new
QQmlThreadPrivate
(
this
)
) {}
51
QQmlThread
::~
QQmlThread
() {
delete
d; }
52
53
void
QQmlThread
::
startup
() { d
->
m_isRunning
=
true
; }
54
void
QQmlThread
::
restart
()
55
{
56
startup
(
)
;
57
if
(!d->m_messages.isEmpty())
58
QCoreApplication::postEvent(d,
new
QEvent(QEvent::User));
59
}
60
void
QQmlThread
::
shutdown
() { d
->
m_isRunning
=
false
; }
61
bool
QQmlThread
::
isRunning
()
const
{
return
d
->
m_isRunning
; }
62
63
void
QQmlThread
::
lock
() {}
64
void
QQmlThread
::
unlock
() {}
65
void
QQmlThread
::
wakeOne
() {}
66
void
QQmlThread
::
wait
() {}
67
68
QThread *
QQmlThread
::
thread
()
const
69
{
70
return
d->thread();
71
}
72
73
QObject
*
QQmlThread
::
threadObject
()
const
74
{
75
return
d;
76
}
77
78
bool
QQmlThread
::
isThisThread
()
const
79
{
80
return
d->thread()->isCurrentThread();
81
}
82
83
bool
QQmlThread
::
isParentThread
()
const
84
{
85
return
d->thread()->isCurrentThread();
86
}
87
88
void
QQmlThread
::internalCallMethodInThread(Message *message)
89
{
90
internalCallMethodInMain(message);
91
}
92
93
void
QQmlThread
::internalCallMethodInMain(Message *message)
94
{
95
message->call(
this
);
96
delete
message;
97
}
98
99
void
QQmlThread
::internalPostMethodToThread(Message *message)
100
{
101
internalPostMethodToMain(message);
102
}
103
104
void
QQmlThread
::internalPostMethodToMain(Message *message)
105
{
106
const
bool
wasEmpty = d->m_messages.isEmpty();
107
d->m_messages.append(message);
108
if
(wasEmpty && !d->m_processing)
109
QCoreApplication::postEvent(d,
new
QEvent(QEvent::User));
110
}
111
112
void
QQmlThread
::
waitForNextMessage
() {}
113
114
void
QQmlThread
::
discardMessages
()
115
{
116
while
(!d->m_messages.isEmpty())
117
delete
d->m_messages.takeFirst();
118
}
119
120
QT_END_NAMESPACE
QQmlThreadPrivate::m_processing
bool m_processing
Definition
qqmlthread_stub.cpp:46
QQmlThreadPrivate::QQmlThreadPrivate
QQmlThreadPrivate(QQmlThread *q)
Definition
qqmlthread_stub.cpp:25
QQmlThreadPrivate::MessageList
QFieldList< QQmlThread::Message, &QQmlThread::Message::next > MessageList
Definition
qqmlthread_stub.cpp:23
QQmlThreadPrivate::m_messages
MessageList m_messages
Definition
qqmlthread_stub.cpp:43
QQmlThreadPrivate::m_isRunning
bool m_isRunning
Definition
qqmlthread_stub.cpp:47
QQmlThreadPrivate::event
bool event(QEvent *e) override
This virtual function receives events to an object and should return true if the event e was recogniz...
Definition
qqmlthread_stub.cpp:27
QQmlThread
\inmodule QtQml
Definition
qqmlthread_p.h:31
QQmlThread::lock
void lock()
Definition
qqmlthread_impl.cpp:232
QQmlThread::QQmlThread
QQmlThread()
Definition
qqmlthread_impl.cpp:167
QQmlThread::thread
QThread * thread() const
Definition
qqmlthread_impl.cpp:263
QQmlThread::discardMessages
void discardMessages()
Definition
qqmlthread_impl.cpp:408
QQmlThread::unlock
void unlock()
Definition
qqmlthread_impl.cpp:237
QQmlThread::isRunning
bool isRunning() const
Definition
qqmlthread_impl.cpp:227
QQmlThread::wait
void wait()
Definition
qqmlthread_impl.cpp:247
QQmlThread::isThisThread
bool isThisThread() const
Definition
qqmlthread_impl.cpp:252
QQmlThread::shutdown
void shutdown()
Definition
qqmlthread_impl.cpp:206
QQmlThread::waitForNextMessage
void waitForNextMessage()
Definition
qqmlthread_impl.cpp:377
QQmlThread::restart
void restart()
Definition
qqmlthread_impl.cpp:188
QQmlThread::isParentThread
bool isParentThread() const
Definition
qqmlthread_impl.cpp:257
QQmlThread::wakeOne
void wakeOne()
Definition
qqmlthread_impl.cpp:242
QQmlThread::startup
void startup()
Definition
qqmlthread_impl.cpp:181
QQmlThread::~QQmlThread
virtual ~QQmlThread()
Definition
qqmlthread_impl.cpp:172
QQmlThread::threadObject
QObject * threadObject() const
Definition
qqmlthread_impl.cpp:273
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtdeclarative
src
qml
qml
ftw
qqmlthread_stub.cpp
Generated on
for Qt by
1.18.0