Qt
6.x
The Qt SDK
Loading...
Searching...
No Matches
qsgthreadedrenderloop_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 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
4
#ifndef QSGTHREADEDRENDERLOOP_P_H
5
#define QSGTHREADEDRENDERLOOP_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#include <QtCore/QThread>
19
#include <QtCore/QElapsedTimer>
20
#include <private/qsgcontext_p.h>
21
22
#include "
qsgrenderloop_p.h
"
23
24
QT_BEGIN_NAMESPACE
25
26
class
QSGRenderThread
;
27
28
class
QSGThreadedRenderLoop
:
public
QSGRenderLoop
29
{
30
Q_OBJECT
31
public
:
32
QSGThreadedRenderLoop
();
33
~QSGThreadedRenderLoop
();
34
35
void
show
(
QQuickWindow
*)
override
{}
36
void
hide
(
QQuickWindow
*)
override
;
37
void
resize
(
QQuickWindow
*
window
)
override
;
38
39
void
windowDestroyed
(
QQuickWindow
*
window
)
override
;
40
void
exposureChanged
(
QQuickWindow
*
window
)
override
;
41
42
QImage
grab
(
QQuickWindow
*)
override
;
43
44
void
update
(
QQuickWindow
*
window
)
override
;
45
void
maybeUpdate
(
QQuickWindow
*
window
)
override
;
46
void
handleUpdateRequest
(
QQuickWindow
*
window
)
override
;
47
48
QSGContext
*
sceneGraphContext
()
const override
;
49
QSGRenderContext
*
createRenderContext
(
QSGContext
*)
const override
;
50
51
QAnimationDriver
*
animationDriver
()
const override
;
52
53
void
releaseResources
(
QQuickWindow
*
window
)
override
;
54
55
bool
event
(
QEvent
*)
override
;
56
void
postJob
(
QQuickWindow
*
window
,
QRunnable
*job)
override
;
57
58
bool
interleaveIncubation
()
const override
;
59
60
public
Q_SLOTS
:
61
void
animationStarted
();
62
void
animationStopped
();
63
64
private
:
65
struct
Window
{
66
QQuickWindow
*window;
67
QSGRenderThread
*thread;
68
QSurfaceFormat
actualWindowFormat;
69
QElapsedTimer
timeBetweenPolishAndSyncs;
70
float
psTimeAccumulator;
71
int
psTimeSampleCount;
72
uint
updateDuringSync : 1;
73
uint
forceRenderPass : 1;
74
uint
badVSync : 1;
75
};
76
77
friend
class
QSGRenderThread
;
78
79
80
Window
*windowFor(
QQuickWindow
*
window
);
81
void
releaseResources
(Window *
window
,
bool
inDestructor);
82
bool
checkAndResetForceUpdate(
QQuickWindow
*
window
);
83
84
bool
anyoneShowing()
const
;
85
void
initialize
();
86
87
void
startOrStopAnimationTimer();
88
void
postUpdateRequest(Window *
w
);
89
void
waitForReleaseComplete();
90
void
polishAndSync(Window *
w
,
bool
inExpose =
false
);
91
void
maybeUpdate
(Window *
window
);
92
93
void
handleExposure(
QQuickWindow
*
w
);
94
void
handleObscurity(Window *
w
);
95
void
releaseSwapchain(
QQuickWindow
*
window
);
96
97
bool
eventFilter
(
QObject
*watched,
QEvent
*
event
)
override
;
98
99
QSGContext
*sg;
100
// Set of contexts that have been created but are now owned by
101
// a rendering thread yet, as the window has never been exposed.
102
mutable
QSet<QSGRenderContext*>
pendingRenderContexts;
103
QAnimationDriver
*m_animation_driver;
104
QList<Window>
m_windows;
105
106
int
m_animation_timer;
107
108
bool
m_lockedForSync;
109
bool
m_inPolish =
false
;
110
};
111
112
QT_END_NAMESPACE
113
114
#endif
// QSGTHREADEDRENDERLOOP_P_H
QAnimationDriver
\inmodule QtCore
Definition
qabstractanimation.h:107
QElapsedTimer
\inmodule QtCore
Definition
qelapsedtimer.h:14
QEvent
\inmodule QtCore
Definition
qcoreevent.h:45
QImage
\inmodule QtGui
Definition
qimage.h:37
QList
Definition
qlist.h:74
QObject
\inmodule QtCore
Definition
qobject.h:90
QQuickWindow
\qmltype Window \instantiates QQuickWindow \inqmlmodule QtQuick
Definition
qquickwindow.h:41
QRunnable
\inmodule QtCore
Definition
qrunnable.h:18
QSGContext
The QSGContext holds the scene graph entry points for one QML engine.
Definition
qsgcontext_p.h:74
QSGRenderContext
Definition
qsgcontext_p.h:124
QSGRenderLoop
Definition
qsgrenderloop_p.h:34
QSGRenderThread
Definition
qsgthreadedrenderloop.cpp:220
QSGThreadedRenderLoop
Definition
qsgthreadedrenderloop_p.h:29
QSGThreadedRenderLoop::interleaveIncubation
bool interleaveIncubation() const override
Definition
qsgthreadedrenderloop.cpp:1028
QSGThreadedRenderLoop::grab
QImage grab(QQuickWindow *) override
Definition
qsgthreadedrenderloop.cpp:1709
QSGThreadedRenderLoop::createRenderContext
QSGRenderContext * createRenderContext(QSGContext *) const override
Definition
qsgthreadedrenderloop.cpp:996
QSGThreadedRenderLoop::show
void show(QQuickWindow *) override
Definition
qsgthreadedrenderloop_p.h:35
QSGThreadedRenderLoop::eventFilter
bool eventFilter(QObject *watched, QEvent *event) override
Filters events if this object has been installed as an event filter for the watched object.
Definition
qsgthreadedrenderloop.cpp:1339
QSGThreadedRenderLoop::postJob
void postJob(QQuickWindow *window, QRunnable *job) override
Definition
qsgthreadedrenderloop.cpp:1746
QSGThreadedRenderLoop::sceneGraphContext
QSGContext * sceneGraphContext() const override
Definition
qsgthreadedrenderloop.cpp:1013
QSGThreadedRenderLoop::~QSGThreadedRenderLoop
~QSGThreadedRenderLoop()
Definition
qsgthreadedrenderloop.cpp:990
QSGThreadedRenderLoop::resize
void resize(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1128
QSGThreadedRenderLoop::update
void update(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1429
QSGThreadedRenderLoop::handleUpdateRequest
void handleUpdateRequest(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1365
QSGThreadedRenderLoop::animationDriver
QAnimationDriver * animationDriver() const override
Definition
qsgthreadedrenderloop.cpp:1008
QSGThreadedRenderLoop::animationStarted
void animationStarted()
Definition
qsgthreadedrenderloop.cpp:1033
QSGThreadedRenderLoop::maybeUpdate
void maybeUpdate(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1377
QSGThreadedRenderLoop::QSGThreadedRenderLoop
QSGThreadedRenderLoop()
Definition
qsgthreadedrenderloop.cpp:978
QSGThreadedRenderLoop::exposureChanged
void exposureChanged(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1189
QSGThreadedRenderLoop::releaseResources
void releaseResources(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1449
QSGThreadedRenderLoop::windowDestroyed
void windowDestroyed(QQuickWindow *window) override
Definition
qsgthreadedrenderloop.cpp:1145
QSGThreadedRenderLoop::animationStopped
void animationStopped()
Definition
qsgthreadedrenderloop.cpp:1042
QSet
Definition
qset.h:18
QSurfaceFormat
The QSurfaceFormat class represents the format of a QSurface. \inmodule QtGui.
Definition
qsurfaceformat.h:17
Window
[Window class with invokable method]
Definition
window.h:11
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1545
initialize
static bool initialize()
Definition
qctf.cpp:67
w
GLfloat GLfloat GLfloat w
[0]
Definition
qopengles2ext.h:789
event
struct _cl_event * event
Definition
qopenglext.h:2998
qsgrenderloop_p.h
Q_OBJECT
#define Q_OBJECT
Definition
qtmetamacros.h:117
Q_SLOTS
#define Q_SLOTS
Definition
qtmetamacros.h:44
uint
unsigned int uint
Definition
qtypes.h:29
Window
XID Window
Definition
qxcbnativepainting.h:13
hide
edit hide()
window
aWidget window() -> setWindowTitle("New Window Title")
[2]
qtdeclarative
src
quick
scenegraph
qsgthreadedrenderloop_p.h
Generated by
1.9.7