qeglfswindow.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/plugins/platforms/eglfs/qeglfswindow.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5QEglFSWindow::QEglFSWindow(QWindow *w)-
6 : QPlatformWindow(w),-
7 m_backingStore(0),-
8 m_raster(false),-
9 m_winId(0),-
10 m_surface(((EGLSurface)0)),-
11 m_window(0),-
12 m_flags(0)-
13{-
14}
never executed: end of block
0
15-
16QEglFSWindow::~QEglFSWindow()-
17{-
18 destroy();-
19}
never executed: end of block
0
20-
21static WId newWId()-
22{-
23 static WId id = 0;-
24-
25 if (id == std::numeric_limits<WId>::max()
id == std::num...ts<WId>::max()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
26 QMessageLogger(__FILE__, 70, __PRETTY_FUNCTION__).warning("QEGLPlatformWindow: Out of window IDs");
never executed: QMessageLogger(__FILE__, 70, __PRETTY_FUNCTION__).warning("QEGLPlatformWindow: Out of window IDs");
0
27-
28 return
never executed: return ++id;
++id;
never executed: return ++id;
0
29}-
30-
31void QEglFSWindow::create()-
32{-
33 if (m_flags.testFlag(Created)
m_flags.testFlag(Created)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
34 return;
never executed: return;
0
35-
36 m_winId = newWId();-
37-
38-
39 m_raster = (window()->surfaceType() == QSurface::RasterSurface);-
40 if (m_raster
m_rasterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
41 window()->setSurfaceType(QSurface::OpenGLSurface);
never executed: window()->setSurfaceType(QSurface::OpenGLSurface);
0
42-
43 if (window()->type() == Qt::Desktop
window()->type...== Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
44 QRect fullscreenRect(QPoint(), screen()->availableGeometry().size());-
45 QPlatformWindow::setGeometry(fullscreenRect);-
46 QWindowSystemInterface::handleGeometryChange(window(), fullscreenRect);-
47 return;
never executed: return;
0
48 }-
49-
50 m_flags = Created;-
51-
52 if (window()->type() == Qt::Desktop
window()->type...== Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
53 return;
never executed: return;
0
54-
55-
56-
57-
58 QEglFSScreen *screen = this->screen();-
59 QOpenGLCompositor *compositor = QOpenGLCompositor::instance();-
60 if (screen->primarySurface() != ((EGLSurface)0)
screen->primar...(EGLSurface)0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
61 if (isRaster()
isRaster()Description
TRUEnever evaluated
FALSEnever evaluated
&& compositor->targetWindow()
compositor->targetWindow()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
62 m_format = compositor->targetWindow()->format();-
63 return;
never executed: return;
0
64 }-
65-
66-
67-
68-
69 QMessageLogger(__FILE__, 113, __PRETTY_FUNCTION__).fatal("EGLFS: OpenGL windows cannot be mixed with others.");-
70-
71-
72 return;
never executed: return;
0
73 }-
74-
75 m_flags |= HasNativeWindow;-
76 setGeometry(QRect());-
77 QWindowSystemInterface::handleExposeEvent(window(), QRect(QPoint(0, 0), geometry().size()));-
78-
79 resetSurface();-
80-
81 if (m_surface == ((EGLSurface)0)
m_surface == ((EGLSurface)0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
82 EGLint error = eglGetError();-
83 eglTerminate(screen->display());-
84 QMessageLogger(__FILE__, 128, __PRETTY_FUNCTION__).fatal("EGL Error : Could not create the egl surface: error = 0x%x\n", error);-
85 }
never executed: end of block
0
86-
87 screen->setPrimarySurface(m_surface);-
88-
89 if (isRaster()
isRaster()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
90 QOpenGLContext *context = new QOpenGLContext(QGuiApplication::instance());-
91 context->setShareContext(qt_gl_global_share_context());-
92 context->setFormat(m_format);-
93 context->setScreen(window()->screen());-
94 if (!context->create()
!context->create()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
95 QMessageLogger(__FILE__, 139, __PRETTY_FUNCTION__).fatal("EGLFS: Failed to create compositing context");
never executed: QMessageLogger(__FILE__, 139, __PRETTY_FUNCTION__).fatal("EGLFS: Failed to create compositing context");
0
96 compositor->setTarget(context, window());-
97-
98-
99 if (!qt_gl_global_share_context()
!qt_gl_global_share_context()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
100 qt_gl_set_global_share_context(context);-
101-
102-
103 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);-
104 }
never executed: end of block
0
105 }
never executed: end of block
0
106}
never executed: end of block
0
107-
108void QEglFSWindow::destroy()-
109{-
110 QEglFSScreen *screen = this->screen();-
111 if (m_flags.testFlag(HasNativeWindow)
m_flags.testFl...sNativeWindow)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
112 QEglFSCursor *cursor = qobject_cast<QEglFSCursor *>(screen->cursor());-
113 if (cursor
cursorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
114 cursor->resetResources();
never executed: cursor->resetResources();
0
115-
116 if (screen->primarySurface() == m_surface
screen->primar...) == m_surfaceDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
117 screen->setPrimarySurface(((EGLSurface)0));
never executed: screen->setPrimarySurface(((EGLSurface)0));
0
118-
119 invalidateSurface();-
120 }
never executed: end of block
0
121-
122 m_flags = 0;-
123 QOpenGLCompositor::instance()->removeWindow(this);-
124}
never executed: end of block
0
125-
126void QEglFSWindow::invalidateSurface()-
127{-
128 if (m_surface != ((EGLSurface)0)
m_surface != ((EGLSurface)0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
129 eglDestroySurface(screen()->display(), m_surface);-
130 m_surface = ((EGLSurface)0);-
131 }
never executed: end of block
0
132 qt_egl_device_integration()->destroyNativeWindow(m_window);-
133 m_window = 0;-
134}
never executed: end of block
0
135-
136void QEglFSWindow::resetSurface()-
137{-
138 EGLDisplay display = screen()->display();-
139 QSurfaceFormat platformFormat = qt_egl_device_integration()->surfaceFormatFor(window()->requestedFormat());-
140-
141 m_config = QEglFSIntegration::chooseConfig(display, platformFormat);-
142 m_format = q_glFormatFromConfig(display, m_config, platformFormat);-
143 m_window = qt_egl_device_integration()->createNativeWindow(this, screen()->geometry().size(), m_format);-
144 m_surface = eglCreateWindowSurface(display, m_config, m_window, __null);-
145}
never executed: end of block
0
146-
147void QEglFSWindow::setVisible(bool visible)-
148{-
149 QOpenGLCompositor *compositor = QOpenGLCompositor::instance();-
150 QList<QOpenGLCompositorWindow *> windows = compositor->windows();-
151 QWindow *wnd = window();-
152-
153 if (wnd->type() != Qt::Desktop
wnd->type() != Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
154 if (visible
visibleDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
155 compositor->addWindow(this);-
156 }
never executed: end of block
else {
0
157 compositor->removeWindow(this);-
158 windows = compositor->windows();-
159 if (windows.size()
windows.size()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
160 windows.last()->sourceWindow()->requestActivate();
never executed: windows.last()->sourceWindow()->requestActivate();
0
161 }
never executed: end of block
0
162 }-
163-
164 QWindowSystemInterface::handleExposeEvent(wnd, QRect(QPoint(0, 0), wnd->geometry().size()));-
165-
166 if (visible
visibleDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
167 QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
never executed: QWindowSystemInterface::flushWindowSystemEvents(QEventLoop::ExcludeUserInputEvents);
0
168}
never executed: end of block
0
169-
170void QEglFSWindow::setGeometry(const QRect &r)-
171{-
172 QRect rect;-
173 bool forceFullscreen = m_flags.testFlag(HasNativeWindow);-
174 if (forceFullscreen
forceFullscreenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
175 rect = screen()->availableGeometry();
never executed: rect = screen()->availableGeometry();
0
176 else-
177 rect = r;
never executed: rect = r;
0
178-
179 QPlatformWindow::setGeometry(rect);-
180-
181-
182 if (rect != r
rect != rDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
183 QWindowSystemInterface::handleGeometryChange(window(), rect, r);
never executed: QWindowSystemInterface::handleGeometryChange(window(), rect, r);
0
184}
never executed: end of block
0
185-
186QRect QEglFSWindow::geometry() const-
187{-
188-
189-
190-
191 if (!m_flags.testFlag(Created)
!m_flags.testFlag(Created)Description
TRUEnever evaluated
FALSEnever evaluated
&& screen()->primarySurface() == ((EGLSurface)0)
screen()->prim...(EGLSurface)0)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
192 return
never executed: return screen()->availableGeometry();
screen()->availableGeometry();
never executed: return screen()->availableGeometry();
0
193-
194 return
never executed: return QPlatformWindow::geometry();
QPlatformWindow::geometry();
never executed: return QPlatformWindow::geometry();
0
195}-
196-
197void QEglFSWindow::requestActivateWindow()-
198{-
199 if (window()->type() != Qt::Desktop
window()->type...!= Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
200 QOpenGLCompositor::instance()->moveToTop(this);
never executed: QOpenGLCompositor::instance()->moveToTop(this);
0
201-
202 QWindow *wnd = window();-
203 QWindowSystemInterface::handleWindowActivated(wnd);-
204 QWindowSystemInterface::handleExposeEvent(wnd, QRect(QPoint(0, 0), wnd->geometry().size()));-
205}
never executed: end of block
0
206-
207void QEglFSWindow::raise()-
208{-
209 QWindow *wnd = window();-
210 if (wnd->type() != Qt::Desktop
wnd->type() != Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
211 QOpenGLCompositor::instance()->moveToTop(this);-
212 QWindowSystemInterface::handleExposeEvent(wnd, QRect(QPoint(0, 0), wnd->geometry().size()));-
213 }
never executed: end of block
0
214}
never executed: end of block
0
215-
216void QEglFSWindow::lower()-
217{-
218 QOpenGLCompositor *compositor = QOpenGLCompositor::instance();-
219 QList<QOpenGLCompositorWindow *> windows = compositor->windows();-
220 if (window()->type() != Qt::Desktop
window()->type...!= Qt::DesktopDescription
TRUEnever evaluated
FALSEnever evaluated
&& windows.count() > 1
windows.count() > 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
221 int idx = windows.indexOf(this);-
222 if (idx > 0
idx > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
223 compositor->changeWindowIndex(this, idx - 1);-
224 QWindowSystemInterface::handleExposeEvent(windows.last()->sourceWindow(),-
225 QRect(QPoint(0, 0), windows.last()->sourceWindow()->geometry().size()));-
226 }
never executed: end of block
0
227 }
never executed: end of block
0
228}
never executed: end of block
0
229-
230EGLSurface QEglFSWindow::surface() const-
231{-
232 return
never executed: return m_surface != ((EGLSurface)0) ? m_surface : screen()->primarySurface();
m_surface != ((EGLSurface)0)
m_surface != ((EGLSurface)0)Description
TRUEnever evaluated
FALSEnever evaluated
? m_surface : screen()->primarySurface();
never executed: return m_surface != ((EGLSurface)0) ? m_surface : screen()->primarySurface();
0
233}-
234-
235QSurfaceFormat QEglFSWindow::format() const-
236{-
237 return
never executed: return m_format;
m_format;
never executed: return m_format;
0
238}-
239-
240EGLNativeWindowType QEglFSWindow::eglWindow() const-
241{-
242 return
never executed: return m_window;
m_window;
never executed: return m_window;
0
243}-
244-
245QEglFSScreen *QEglFSWindow::screen() const-
246{-
247 return
never executed: return static_cast<QEglFSScreen *>(QPlatformWindow::screen());
static_cast<QEglFSScreen *>(QPlatformWindow::screen());
never executed: return static_cast<QEglFSScreen *>(QPlatformWindow::screen());
0
248}-
249-
250bool QEglFSWindow::isRaster() const-
251{-
252 return
never executed: return m_raster || window()->surfaceType() == QSurface::RasterGLSurface;
m_raster
m_rasterDescription
TRUEnever evaluated
FALSEnever evaluated
|| window()->surfaceType() == QSurface::RasterGLSurface
window()->surf...asterGLSurfaceDescription
TRUEnever evaluated
FALSEnever evaluated
;
never executed: return m_raster || window()->surfaceType() == QSurface::RasterGLSurface;
0
253}-
254-
255QWindow *QEglFSWindow::sourceWindow() const-
256{-
257 return
never executed: return window();
window();
never executed: return window();
0
258}-
259-
260const QPlatformTextureList *QEglFSWindow::textures() const-
261{-
262 if (m_backingStore
m_backingStoreDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
263 return
never executed: return m_backingStore->textures();
m_backingStore->textures();
never executed: return m_backingStore->textures();
0
264-
265 return
never executed: return 0;
0;
never executed: return 0;
0
266}-
267-
268void QEglFSWindow::endCompositing()-
269{-
270 if (m_backingStore
m_backingStoreDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
271 m_backingStore->notifyComposited();
never executed: m_backingStore->notifyComposited();
0
272}
never executed: end of block
0
273-
274WId QEglFSWindow::winId() const-
275{-
276 return
never executed: return m_winId;
m_winId;
never executed: return m_winId;
0
277}-
278-
279void QEglFSWindow::setOpacity(qreal)-
280{-
281 if (!isRaster()
!isRaster()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
282 QMessageLogger(__FILE__, 326, __PRETTY_FUNCTION__).warning("QEglFSWindow: Cannot set opacity for non-raster windows");
never executed: QMessageLogger(__FILE__, 326, __PRETTY_FUNCTION__).warning("QEglFSWindow: Cannot set opacity for non-raster windows");
0
283-
284-
285}
never executed: end of block
0
286-
287-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9