qeglfsdeviceintegration.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11const QLoggingCategory &qLcEglDevDebug() { static const QLoggingCategory category("qt.qpa.egldeviceintegration"); return
never executed: return category;
category;
never executed: return category;
}
0
12-
13-
14-
15namespace { namespace Q_QGS_loader { typedef QFactoryLoader Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ("org.qt-project.qt.qpa.egl.QEGLDeviceIntegrationFactoryInterface.5.5", QLatin1String("/egldeviceintegrations"), Qt::CaseInsensitive))) : value ("org.qt-project.qt.qpa.egl.QEGLDeviceIntegrationFactoryInterface.5.5", QLatin1String("/egldeviceintegrations"), Qt::CaseInsensitive) { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<QFactoryLoader, Q_QGS_loader::innerFunction, Q_QGS_loader::guard> loader;
0
16-
17-
18namespace { namespace Q_QGS_directLoader { typedef QFactoryLoader Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized
guard.load() =...c::InitializedDescription
TRUEnever evaluated
FALSEnever evaluated
) guard.store(QtGlobalStatic::Destroyed);
never executed: guard.store(QtGlobalStatic::Destroyed);
}
never executed: end of block
}; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type ("org.qt-project.qt.qpa.egl.QEGLDeviceIntegrationFactoryInterface.5.5", QLatin1String(""), Qt::CaseInsensitive))) : value ("org.qt-project.qt.qpa.egl.QEGLDeviceIntegrationFactoryInterface.5.5", QLatin1String(""), Qt::CaseInsensitive) { guard.store(QtGlobalStatic::Initialized); } } holder; return
never executed: return &holder.value;
&holder.value;
never executed: return &holder.value;
} } } static QGlobalStatic<QFactoryLoader, Q_QGS_directLoader::innerFunction, Q_QGS_directLoader::guard> directLoader;
0
19-
20-
21static inline QEGLDeviceIntegration *loadIntegration(QFactoryLoader *loader, const QString &key)-
22{-
23 const int index = loader->indexOf(key);-
24 if (index != -1
index != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
25 QObject *plugin = loader->instance(index);-
26 if (QEGLDeviceIntegrationPlugin *factory = qobject_cast<QEGLDeviceIntegrationPlugin *>(plugin)
QEGLDeviceInte...gin *>(plugin)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
27 if (QEGLDeviceIntegration *result = factory->create()
QEGLDeviceInte...tory->create()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
28 return
never executed: return result;
result;
never executed: return result;
0
29 }
never executed: end of block
0
30 }
never executed: end of block
0
31 return
never executed: return nullptr;
nullptr;
never executed: return nullptr;
0
32}-
33-
34-
35-
36QStringList QEGLDeviceIntegrationFactory::keys(const QString &pluginPath)-
37{-
38-
39 QStringList list;-
40 if (!pluginPath.isEmpty()
!pluginPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
41 QCoreApplication::addLibraryPath(pluginPath);-
42 list = directLoader()->keyMap().values();-
43 if (!list.isEmpty()
!list.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
44 const QString postFix = ([]() -> QString { enum { Size = sizeof(u"" " (from ")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" " (from " }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}())
0
45 + QDir::toNativeSeparators(pluginPath)-
46 + QLatin1Char(')');-
47 const QStringList::iterator end = list.end();-
48 for (QStringList::iterator it = list.begin(); it != end
it != endDescription
TRUEnever evaluated
FALSEnever evaluated
; ++it)
0
49 (*
never executed: (*it).append(postFix);
it).append(postFix);
never executed: (*it).append(postFix);
0
50 }
never executed: end of block
0
51 }
never executed: end of block
0
52 list.append(loader()->keyMap().values());-
53 for (bool qt_category_enabled = qLcEglDevDebug().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 100, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).debug() << "EGL device integration plugin keys:" << list;
never executed: QMessageLogger(__FILE__, 100, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).debug() << "EGL device integration plugin keys:" << list;
0
54 return
never executed: return list;
list;
never executed: return list;
0
55-
56-
57-
58-
59}-
60-
61QEGLDeviceIntegration *QEGLDeviceIntegrationFactory::create(const QString &key, const QString &pluginPath)-
62{-
63 QEGLDeviceIntegration *integration = nullptr;-
64-
65 if (!pluginPath.isEmpty()
!pluginPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
66 QCoreApplication::addLibraryPath(pluginPath);-
67 integration = loadIntegration(directLoader(), key);-
68 }
never executed: end of block
0
69 if (!integration
!integrationDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
70 integration = loadIntegration(loader(), key);
never executed: integration = loadIntegration(loader(), key);
0
71 if (integration
integrationDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
72 for (bool qt_category_enabled = qLcEglDevDebug().isDebugEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 119, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).debug() << "Using EGL device integration" << key;
never executed: QMessageLogger(__FILE__, 119, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).debug() << "Using EGL device integration" << key;
0
73 else-
74 for (bool qt_category_enabled = qLcEglDevDebug().isWarningEnabled(); qt_category_enabled
qt_category_enabledDescription
TRUEnever evaluated
FALSEnever evaluated
; qt_category_enabled = false) QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).warning() << "Failed to load EGL device integration" << key;
never executed: QMessageLogger(__FILE__, 121, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).warning() << "Failed to load EGL device integration" << key;
0
75-
76-
77-
78-
79 return
never executed: return integration;
integration;
never executed: return integration;
0
80}-
81-
82static int framebuffer = -1;-
83-
84QByteArray QEGLDeviceIntegration::fbDeviceName() const-
85{-
86 QByteArray fbDev = qgetenv("QT_QPA_EGLFS_FB");-
87 if (fbDev.isEmpty()
fbDev.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
88 fbDev = ([]() -> QByteArray { enum { Size = sizeof("/dev/fb0") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "/dev/fb0" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return
never executed: return ba;
ba;
never executed: return ba;
}());
never executed: fbDev = ([]() -> QByteArray { enum { Size = sizeof("/dev/fb0") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "/dev/fb0" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }());
0
89-
90 return
never executed: return fbDev;
fbDev;
never executed: return fbDev;
0
91}-
92-
93int QEGLDeviceIntegration::framebufferIndex() const-
94{-
95 int fbIndex = 0;-
96-
97 QRegularExpression fbIndexRx(QLatin1String("fb(\\d+)"));-
98 QRegularExpressionMatch match = fbIndexRx.match(QString::fromLocal8Bit(fbDeviceName()));-
99 if (match.hasMatch()
match.hasMatch()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
100 fbIndex = match.captured(1).toInt();
never executed: fbIndex = match.captured(1).toInt();
0
101-
102 return
never executed: return fbIndex;
fbIndex;
never executed: return fbIndex;
0
103}-
104-
105void QEGLDeviceIntegration::platformInit()-
106{-
107 QByteArray fbDev = fbDeviceName();-
108-
109 framebuffer = qt_safe_open(fbDev, 00);-
110-
111 if (framebuffer == -1
framebuffer == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
112 QMessageLogger(__FILE__, 159, __PRETTY_FUNCTION__).warning("EGLFS: Failed to open %s", fbDev.constData());-
113 QMessageLogger(__FILE__, 160, __PRETTY_FUNCTION__).fatal("EGLFS: Can't continue without a display");-
114 }
never executed: end of block
0
115-
116-
117 ioctl(framebuffer, 0x4611, 0);-
118-
119}
never executed: end of block
0
120-
121void QEGLDeviceIntegration::platformDestroy()-
122{-
123 if (framebuffer != -1
framebuffer != -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
124 close(framebuffer);
never executed: close(framebuffer);
0
125}
never executed: end of block
0
126-
127EGLNativeDisplayType QEGLDeviceIntegration::platformDisplay() const-
128{-
129 return
never executed: return ((EGLNativeDisplayType)0);
((EGLNativeDisplayType)0);
never executed: return ((EGLNativeDisplayType)0);
0
130}-
131-
132EGLDisplay QEGLDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay)-
133{-
134 return
never executed: return eglGetDisplay(nativeDisplay);
eglGetDisplay(nativeDisplay);
never executed: return eglGetDisplay(nativeDisplay);
0
135}-
136-
137bool QEGLDeviceIntegration::usesDefaultScreen()-
138{-
139 return
never executed: return true;
true;
never executed: return true;
0
140}-
141-
142void QEGLDeviceIntegration::screenInit()-
143{-
144-
145}-
146-
147void QEGLDeviceIntegration::screenDestroy()-
148{-
149 QGuiApplication *app = (static_cast<QGuiApplication *>(QCoreApplication::instance()));-
150 QEglFSIntegration *platformIntegration = static_cast<QEglFSIntegration *>(-
151 QGuiApplicationPrivate::platformIntegration());-
152 while (!app->screens().isEmpty()
!app->screens().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
153 platformIntegration->removeScreen(app->screens().last()->handle());
never executed: platformIntegration->removeScreen(app->screens().last()->handle());
0
154}
never executed: end of block
0
155-
156QSizeF QEGLDeviceIntegration::physicalScreenSize() const-
157{-
158 return
never executed: return q_physicalScreenSizeFromFb(framebuffer, screenSize());
q_physicalScreenSizeFromFb(framebuffer, screenSize());
never executed: return q_physicalScreenSizeFromFb(framebuffer, screenSize());
0
159}-
160-
161QSize QEGLDeviceIntegration::screenSize() const-
162{-
163 return
never executed: return q_screenSizeFromFb(framebuffer);
q_screenSizeFromFb(framebuffer);
never executed: return q_screenSizeFromFb(framebuffer);
0
164}-
165-
166QDpi QEGLDeviceIntegration::logicalDpi() const-
167{-
168 const QSizeF ps = physicalScreenSize();-
169 const QSize s = screenSize();-
170-
171 if (!ps.isEmpty()
!ps.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
&& !s.isEmpty()
!s.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
172 return
never executed: return QDpi(25.4 * s.width() / ps.width(), 25.4 * s.height() / ps.height());
QDpi(25.4 * s.width() / ps.width(),
never executed: return QDpi(25.4 * s.width() / ps.width(), 25.4 * s.height() / ps.height());
0
173 25.4 * s.height() / ps.height());
never executed: return QDpi(25.4 * s.width() / ps.width(), 25.4 * s.height() / ps.height());
0
174 else-
175 return
never executed: return QDpi(100, 100);
QDpi(100, 100);
never executed: return QDpi(100, 100);
0
176}-
177-
178qreal QEGLDeviceIntegration::pixelDensity() const-
179{-
180 return
never executed: return qRound(logicalDpi().first / qreal(100));
qRound(logicalDpi().first / qreal(100));
never executed: return qRound(logicalDpi().first / qreal(100));
0
181}-
182-
183Qt::ScreenOrientation QEGLDeviceIntegration::nativeOrientation() const-
184{-
185 return
never executed: return Qt::PrimaryOrientation;
Qt::PrimaryOrientation;
never executed: return Qt::PrimaryOrientation;
0
186}-
187-
188Qt::ScreenOrientation QEGLDeviceIntegration::orientation() const-
189{-
190 return
never executed: return Qt::PrimaryOrientation;
Qt::PrimaryOrientation;
never executed: return Qt::PrimaryOrientation;
0
191}-
192-
193int QEGLDeviceIntegration::screenDepth() const-
194{-
195 return
never executed: return q_screenDepthFromFb(framebuffer);
q_screenDepthFromFb(framebuffer);
never executed: return q_screenDepthFromFb(framebuffer);
0
196}-
197-
198QImage::Format QEGLDeviceIntegration::screenFormat() const-
199{-
200 return
never executed: return screenDepth() == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
screenDepth() == 16
screenDepth() == 16Description
TRUEnever evaluated
FALSEnever evaluated
? QImage::Format_RGB16 : QImage::Format_RGB32;
never executed: return screenDepth() == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
0
201}-
202-
203qreal QEGLDeviceIntegration::refreshRate() const-
204{-
205 return
never executed: return q_refreshRateFromFb(framebuffer);
q_refreshRateFromFb(framebuffer);
never executed: return q_refreshRateFromFb(framebuffer);
0
206}-
207-
208EGLint QEGLDeviceIntegration::surfaceType() const-
209{-
210 return
never executed: return 0x0004;
0x0004;
never executed: return 0x0004;
0
211}-
212-
213QSurfaceFormat QEGLDeviceIntegration::surfaceFormatFor(const QSurfaceFormat &inputFormat) const-
214{-
215 QSurfaceFormat format = inputFormat;-
216-
217 static const bool force888 = qEnvironmentVariableIntValue("QT_QPA_EGLFS_FORCE888");-
218 if (force888
force888Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
219 format.setRedBufferSize(8);-
220 format.setGreenBufferSize(8);-
221 format.setBlueBufferSize(8);-
222 }
never executed: end of block
0
223-
224 return
never executed: return format;
format;
never executed: return format;
0
225}-
226-
227bool QEGLDeviceIntegration::filterConfig(EGLDisplay, EGLConfig) const-
228{-
229 return
never executed: return true;
true;
never executed: return true;
0
230}-
231-
232QEglFSWindow *QEGLDeviceIntegration::createWindow(QWindow *window) const-
233{-
234 return
never executed: return new QEglFSWindow(window);
new QEglFSWindow(window);
never executed: return new QEglFSWindow(window);
0
235}-
236-
237EGLNativeWindowType QEGLDeviceIntegration::createNativeWindow(QPlatformWindow *platformWindow,-
238 const QSize &size,-
239 const QSurfaceFormat &format)-
240{-
241 (void)platformWindow;;-
242 (void)size;;-
243 (void)format;;-
244 return
never executed: return 0;
0;
never executed: return 0;
0
245}-
246-
247EGLNativeWindowType QEGLDeviceIntegration::createNativeOffscreenWindow(const QSurfaceFormat &format)-
248{-
249 (void)format;;-
250 return
never executed: return 0;
0;
never executed: return 0;
0
251}-
252-
253void QEGLDeviceIntegration::destroyNativeWindow(EGLNativeWindowType window)-
254{-
255 (void)window;;-
256}
never executed: end of block
0
257-
258bool QEGLDeviceIntegration::hasCapability(QPlatformIntegration::Capability cap) const-
259{-
260 (void)cap;;-
261 return
never executed: return false;
false;
never executed: return false;
0
262}-
263-
264QPlatformCursor *QEGLDeviceIntegration::createCursor(QPlatformScreen *screen) const-
265{-
266 return
never executed: return new QEglFSCursor(screen);
new QEglFSCursor(screen);
never executed: return new QEglFSCursor(screen);
0
267}-
268-
269void QEGLDeviceIntegration::waitForVSync(QPlatformSurface *surface) const-
270{-
271 (void)surface;;-
272-
273-
274 static const bool forceSync = qEnvironmentVariableIntValue("QT_QPA_EGLFS_FORCEVSYNC");-
275 if (forceSync
forceSyncDescription
TRUEnever evaluated
FALSEnever evaluated
&& framebuffer != -1
framebuffer != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 int arg = 0;-
277 if (ioctl(framebuffer, (((1U) << (((0 +8)+8)+14)) | ((('F')) << (0 +8)) | (((0x20)) << 0) | ((((sizeof(__u32)))) << ((0 +8)+8))), &arg) == -1
ioctl(framebuf...), &arg) == -1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
278 QMessageLogger(__FILE__, 325, __PRETTY_FUNCTION__).warning("Could not wait for vsync.");
never executed: QMessageLogger(__FILE__, 325, __PRETTY_FUNCTION__).warning("Could not wait for vsync.");
0
279 }
never executed: end of block
0
280-
281}
never executed: end of block
0
282-
283void QEGLDeviceIntegration::presentBuffer(QPlatformSurface *surface)-
284{-
285 (void)surface;;-
286}
never executed: end of block
0
287-
288bool QEGLDeviceIntegration::supportsPBuffers() const-
289{-
290 return
never executed: return true;
true;
never executed: return true;
0
291}-
292-
293bool QEGLDeviceIntegration::supportsSurfacelessContexts() const-
294{-
295 return
never executed: return true;
true;
never executed: return true;
0
296}-
297-
298void *QEGLDeviceIntegration::wlDisplay() const-
299{-
300 return
never executed: return nullptr;
nullptr;
never executed: return nullptr;
0
301}-
302-
303-
Switch to Source codePreprocessed file

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