Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/kernel/qoffscreensurface.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | class __attribute__((visibility("default"))) QOffscreenSurfacePrivate : public QObjectPrivate | - | ||||||||||||
5 | { | - | ||||||||||||
6 | inline QOffscreenSurface* q_func() { return static_cast<QOffscreenSurface *>(q_ptr); } inline const QOffscreenSurface* q_func() const { return static_cast<const QOffscreenSurface *>(q_ptr); } friend class QOffscreenSurface; | - | ||||||||||||
7 | - | |||||||||||||
8 | public: | - | ||||||||||||
9 | QOffscreenSurfacePrivate() | - | ||||||||||||
10 | : QObjectPrivate() | - | ||||||||||||
11 | , surfaceType(QSurface::OpenGLSurface) | - | ||||||||||||
12 | , platformOffscreenSurface(0) | - | ||||||||||||
13 | , offscreenWindow(0) | - | ||||||||||||
14 | , requestedFormat(QSurfaceFormat::defaultFormat()) | - | ||||||||||||
15 | , screen(0) | - | ||||||||||||
16 | , size(1, 1) | - | ||||||||||||
17 | { | - | ||||||||||||
18 | } never executed: end of block | 0 | ||||||||||||
19 | - | |||||||||||||
20 | ~QOffscreenSurfacePrivate() | - | ||||||||||||
21 | { | - | ||||||||||||
22 | } | - | ||||||||||||
23 | - | |||||||||||||
24 | QSurface::SurfaceType surfaceType; | - | ||||||||||||
25 | QPlatformOffscreenSurface *platformOffscreenSurface; | - | ||||||||||||
26 | QWindow *offscreenWindow; | - | ||||||||||||
27 | QSurfaceFormat requestedFormat; | - | ||||||||||||
28 | QScreen *screen; | - | ||||||||||||
29 | QSize size; | - | ||||||||||||
30 | }; | - | ||||||||||||
31 | QOffscreenSurface::QOffscreenSurface(QScreen *targetScreen) | - | ||||||||||||
32 | : QObject(*new QOffscreenSurfacePrivate(), 0) | - | ||||||||||||
33 | , QSurface(Offscreen) | - | ||||||||||||
34 | { | - | ||||||||||||
35 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
36 | d->screen = targetScreen; | - | ||||||||||||
37 | if (!d->screen
| 0 | ||||||||||||
38 | d->screen = QGuiApplication::primaryScreen(); never executed: d->screen = QGuiApplication::primaryScreen(); | 0 | ||||||||||||
39 | - | |||||||||||||
40 | - | |||||||||||||
41 | - | |||||||||||||
42 | ((!(d->screen)) ? qt_assert("d->screen",__FILE__,139) : qt_noop()); | - | ||||||||||||
43 | - | |||||||||||||
44 | connect(d->screen, qFlagLocation("2""destroyed(QObject*)" "\0" __FILE__ ":" "141"), this, qFlagLocation("1""screenDestroyed(QObject*)" "\0" __FILE__ ":" "141")); | - | ||||||||||||
45 | } never executed: end of block | 0 | ||||||||||||
46 | - | |||||||||||||
47 | - | |||||||||||||
48 | - | |||||||||||||
49 | - | |||||||||||||
50 | - | |||||||||||||
51 | QOffscreenSurface::~QOffscreenSurface() | - | ||||||||||||
52 | { | - | ||||||||||||
53 | destroy(); | - | ||||||||||||
54 | } never executed: end of block | 0 | ||||||||||||
55 | - | |||||||||||||
56 | - | |||||||||||||
57 | - | |||||||||||||
58 | - | |||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | QOffscreenSurface::SurfaceType QOffscreenSurface::surfaceType() const | - | ||||||||||||
62 | { | - | ||||||||||||
63 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
64 | return never executed: d->surfaceType;return d->surfaceType; never executed: return d->surfaceType; | 0 | ||||||||||||
65 | } | - | ||||||||||||
66 | void QOffscreenSurface::create() | - | ||||||||||||
67 | { | - | ||||||||||||
68 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
69 | if (!d->platformOffscreenSurface
| 0 | ||||||||||||
70 | d->platformOffscreenSurface = QGuiApplicationPrivate::platformIntegration()->createPlatformOffscreenSurface(this); | - | ||||||||||||
71 | - | |||||||||||||
72 | if (!d->platformOffscreenSurface
| 0 | ||||||||||||
73 | if (QThread::currentThread() != (static_cast<QGuiApplication *>(QCoreApplication::instance()))->thread()
| 0 | ||||||||||||
74 | QMessageLogger(__FILE__, 184, __PRETTY_FUNCTION__).warning("Attempting to create QWindow-based QOffscreenSurface outside the gui thread. Expect failures."); never executed: QMessageLogger(__FILE__, 184, __PRETTY_FUNCTION__).warning("Attempting to create QWindow-based QOffscreenSurface outside the gui thread. Expect failures."); | 0 | ||||||||||||
75 | d->offscreenWindow = new QWindow(d->screen); | - | ||||||||||||
76 | d->offscreenWindow->setObjectName(QLatin1String("QOffscreenSurface")); | - | ||||||||||||
77 | - | |||||||||||||
78 | - | |||||||||||||
79 | QGuiApplicationPrivate::window_list.removeOne(d->offscreenWindow); | - | ||||||||||||
80 | d->offscreenWindow->setSurfaceType(QWindow::OpenGLSurface); | - | ||||||||||||
81 | d->offscreenWindow->setFormat(d->requestedFormat); | - | ||||||||||||
82 | d->offscreenWindow->setGeometry(0, 0, d->size.width(), d->size.height()); | - | ||||||||||||
83 | d->offscreenWindow->create(); | - | ||||||||||||
84 | } never executed: end of block | 0 | ||||||||||||
85 | - | |||||||||||||
86 | QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceCreated); | - | ||||||||||||
87 | QGuiApplication::sendEvent(this, &e); | - | ||||||||||||
88 | } never executed: end of block | 0 | ||||||||||||
89 | } never executed: end of block | 0 | ||||||||||||
90 | - | |||||||||||||
91 | - | |||||||||||||
92 | - | |||||||||||||
93 | - | |||||||||||||
94 | - | |||||||||||||
95 | - | |||||||||||||
96 | void QOffscreenSurface::destroy() | - | ||||||||||||
97 | { | - | ||||||||||||
98 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
99 | - | |||||||||||||
100 | QPlatformSurfaceEvent e(QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed); | - | ||||||||||||
101 | QGuiApplication::sendEvent(this, &e); | - | ||||||||||||
102 | - | |||||||||||||
103 | delete d->platformOffscreenSurface; | - | ||||||||||||
104 | d->platformOffscreenSurface = 0; | - | ||||||||||||
105 | if (d->offscreenWindow
| 0 | ||||||||||||
106 | d->offscreenWindow->destroy(); | - | ||||||||||||
107 | delete d->offscreenWindow; | - | ||||||||||||
108 | d->offscreenWindow = 0; | - | ||||||||||||
109 | } never executed: end of block | 0 | ||||||||||||
110 | } never executed: end of block | 0 | ||||||||||||
111 | bool QOffscreenSurface::isValid() const | - | ||||||||||||
112 | { | - | ||||||||||||
113 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
114 | return never executed: (d->platformOffscreenSurface && d->platformOffscreenSurface->isValid())return (d->platformOffscreenSurface && d->platformOffscreenSurface->isValid()) || (d->offscreenWindow && d->offscreenWindow->handle()); never executed: return (d->platformOffscreenSurface && d->platformOffscreenSurface->isValid()) || (d->offscreenWindow && d->offscreenWindow->handle()); | 0 | ||||||||||||
115 | || (d->offscreenWindow && d->offscreenWindow->handle()); never executed: return (d->platformOffscreenSurface && d->platformOffscreenSurface->isValid()) || (d->offscreenWindow && d->offscreenWindow->handle()); | 0 | ||||||||||||
116 | } | - | ||||||||||||
117 | void QOffscreenSurface::setFormat(const QSurfaceFormat &format) | - | ||||||||||||
118 | { | - | ||||||||||||
119 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
120 | d->requestedFormat = format; | - | ||||||||||||
121 | } never executed: end of block | 0 | ||||||||||||
122 | QSurfaceFormat QOffscreenSurface::requestedFormat() const | - | ||||||||||||
123 | { | - | ||||||||||||
124 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
125 | return never executed: d->requestedFormat;return d->requestedFormat; never executed: return d->requestedFormat; | 0 | ||||||||||||
126 | } | - | ||||||||||||
127 | QSurfaceFormat QOffscreenSurface::format() const | - | ||||||||||||
128 | { | - | ||||||||||||
129 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
130 | if (d->platformOffscreenSurface
| 0 | ||||||||||||
131 | return never executed: d->platformOffscreenSurface->format();return d->platformOffscreenSurface->format(); never executed: return d->platformOffscreenSurface->format(); | 0 | ||||||||||||
132 | if (d->offscreenWindow
| 0 | ||||||||||||
133 | return never executed: d->offscreenWindow->format();return d->offscreenWindow->format(); never executed: return d->offscreenWindow->format(); | 0 | ||||||||||||
134 | return never executed: d->requestedFormat;return d->requestedFormat; never executed: return d->requestedFormat; | 0 | ||||||||||||
135 | } | - | ||||||||||||
136 | - | |||||||||||||
137 | - | |||||||||||||
138 | - | |||||||||||||
139 | - | |||||||||||||
140 | QSize QOffscreenSurface::size() const | - | ||||||||||||
141 | { | - | ||||||||||||
142 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
143 | return never executed: d->size;return d->size; never executed: return d->size; | 0 | ||||||||||||
144 | } | - | ||||||||||||
145 | - | |||||||||||||
146 | - | |||||||||||||
147 | - | |||||||||||||
148 | - | |||||||||||||
149 | - | |||||||||||||
150 | - | |||||||||||||
151 | QScreen *QOffscreenSurface::screen() const | - | ||||||||||||
152 | { | - | ||||||||||||
153 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
154 | return never executed: d->screen;return d->screen; never executed: return d->screen; | 0 | ||||||||||||
155 | } | - | ||||||||||||
156 | void QOffscreenSurface::setScreen(QScreen *newScreen) | - | ||||||||||||
157 | { | - | ||||||||||||
158 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
159 | if (!newScreen
| 0 | ||||||||||||
160 | newScreen = QGuiApplication::primaryScreen(); never executed: newScreen = QGuiApplication::primaryScreen(); | 0 | ||||||||||||
161 | if (newScreen != d->screen
| 0 | ||||||||||||
162 | const bool wasCreated = d->platformOffscreenSurface != 0
| 0 | ||||||||||||
163 | if (wasCreated
| 0 | ||||||||||||
164 | destroy(); never executed: destroy(); | 0 | ||||||||||||
165 | if (d->screen
| 0 | ||||||||||||
166 | disconnect(d->screen, qFlagLocation("2""destroyed(QObject*)" "\0" __FILE__ ":" "322"), this, qFlagLocation("1""screenDestroyed(QObject*)" "\0" __FILE__ ":" "322")); never executed: disconnect(d->screen, qFlagLocation("2""destroyed(QObject*)" "\0" __FILE__ ":" "322"), this, qFlagLocation("1""screenDestroyed(QObject*)" "\0" __FILE__ ":" "322")); | 0 | ||||||||||||
167 | d->screen = newScreen; | - | ||||||||||||
168 | if (newScreen
| 0 | ||||||||||||
169 | connect(d->screen, qFlagLocation("2""destroyed(QObject*)" "\0" __FILE__ ":" "325"), this, qFlagLocation("1""screenDestroyed(QObject*)" "\0" __FILE__ ":" "325")); | - | ||||||||||||
170 | if (wasCreated
| 0 | ||||||||||||
171 | create(); never executed: create(); | 0 | ||||||||||||
172 | } never executed: end of block | 0 | ||||||||||||
173 | screenChanged(newScreen); | - | ||||||||||||
174 | } never executed: end of block | 0 | ||||||||||||
175 | } never executed: end of block | 0 | ||||||||||||
176 | - | |||||||||||||
177 | - | |||||||||||||
178 | - | |||||||||||||
179 | - | |||||||||||||
180 | - | |||||||||||||
181 | - | |||||||||||||
182 | void QOffscreenSurface::screenDestroyed(QObject *object) | - | ||||||||||||
183 | { | - | ||||||||||||
184 | QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
185 | if (object == static_cast<QObject *>(d->screen)
| 0 | ||||||||||||
186 | setScreen(0); never executed: setScreen(0); | 0 | ||||||||||||
187 | } never executed: end of block | 0 | ||||||||||||
188 | QPlatformOffscreenSurface *QOffscreenSurface::handle() const | - | ||||||||||||
189 | { | - | ||||||||||||
190 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
191 | return never executed: d->platformOffscreenSurface;return d->platformOffscreenSurface; never executed: return d->platformOffscreenSurface; | 0 | ||||||||||||
192 | } | - | ||||||||||||
193 | - | |||||||||||||
194 | - | |||||||||||||
195 | - | |||||||||||||
196 | - | |||||||||||||
197 | - | |||||||||||||
198 | - | |||||||||||||
199 | QPlatformSurface *QOffscreenSurface::surfaceHandle() const | - | ||||||||||||
200 | { | - | ||||||||||||
201 | const QOffscreenSurfacePrivate * const d = d_func(); | - | ||||||||||||
202 | if (d->offscreenWindow
| 0 | ||||||||||||
203 | return never executed: d->offscreenWindow->handle();return d->offscreenWindow->handle(); never executed: return d->offscreenWindow->handle(); | 0 | ||||||||||||
204 | - | |||||||||||||
205 | return never executed: d->platformOffscreenSurface;return d->platformOffscreenSurface; never executed: return d->platformOffscreenSurface; | 0 | ||||||||||||
206 | } | - | ||||||||||||
207 | - | |||||||||||||
208 | - | |||||||||||||
Switch to Source code | Preprocessed file |