Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/plugins/platforms/eglfs/qeglfsdeviceintegration.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | - | |||||||||||||
8 | - | |||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | const QLoggingCategory &qLcEglDevDebug() { static const QLoggingCategory category("qt.qpa.egldeviceintegration"); return never executed: category;return category; never executed: }return category; | 0 | ||||||||||||
12 | - | |||||||||||||
13 | - | |||||||||||||
14 | - | |||||||||||||
15 | namespace { 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
never executed: }guard.store(QtGlobalStatic::Destroyed); never executed: }; 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; returnend of block never executed: &holder.value;return &holder.value; never executed: } } } static QGlobalStatic<QFactoryLoader, Q_QGS_loader::innerFunction, Q_QGS_loader::guard> loader;return &holder.value; | 0 | ||||||||||||
16 | - | |||||||||||||
17 | - | |||||||||||||
18 | namespace { 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
never executed: }guard.store(QtGlobalStatic::Destroyed); never executed: }; 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; returnend of block never executed: &holder.value;return &holder.value; never executed: } } } static QGlobalStatic<QFactoryLoader, Q_QGS_directLoader::innerFunction, Q_QGS_directLoader::guard> directLoader;return &holder.value; | 0 | ||||||||||||
19 | - | |||||||||||||
20 | - | |||||||||||||
21 | static inline QEGLDeviceIntegration *loadIntegration(QFactoryLoader *loader, const QString &key) | - | ||||||||||||
22 | { | - | ||||||||||||
23 | const int index = loader->indexOf(key); | - | ||||||||||||
24 | if (index != -1
| 0 | ||||||||||||
25 | QObject *plugin = loader->instance(index); | - | ||||||||||||
26 | if (QEGLDeviceIntegrationPlugin *factory = qobject_cast<QEGLDeviceIntegrationPlugin *>(plugin)
| 0 | ||||||||||||
27 | if (QEGLDeviceIntegration *result = factory->create()
| 0 | ||||||||||||
28 | return never executed: result;return result; never executed: return result; | 0 | ||||||||||||
29 | } never executed: end of block | 0 | ||||||||||||
30 | } never executed: end of block | 0 | ||||||||||||
31 | return never executed: nullptr;return nullptr; never executed: return nullptr; | 0 | ||||||||||||
32 | } | - | ||||||||||||
33 | - | |||||||||||||
34 | - | |||||||||||||
35 | - | |||||||||||||
36 | QStringList QEGLDeviceIntegrationFactory::keys(const QString &pluginPath) | - | ||||||||||||
37 | { | - | ||||||||||||
38 | - | |||||||||||||
39 | QStringList list; | - | ||||||||||||
40 | if (!pluginPath.isEmpty()
| 0 | ||||||||||||
41 | QCoreApplication::addLibraryPath(pluginPath); | - | ||||||||||||
42 | list = directLoader()->keyMap().values(); | - | ||||||||||||
43 | if (!list.isEmpty()
| 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: qstring_literal_temp;return 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
| 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
never executed: QMessageLogger(__FILE__, 100, __PRETTY_FUNCTION__, qLcEglDevDebug().categoryName()).debug() << "EGL device integration plugin keys:" << list; | 0 | ||||||||||||
54 | return never executed: list;return list; never executed: return list; | 0 | ||||||||||||
55 | - | |||||||||||||
56 | - | |||||||||||||
57 | - | |||||||||||||
58 | - | |||||||||||||
59 | } | - | ||||||||||||
60 | - | |||||||||||||
61 | QEGLDeviceIntegration *QEGLDeviceIntegrationFactory::create(const QString &key, const QString &pluginPath) | - | ||||||||||||
62 | { | - | ||||||||||||
63 | QEGLDeviceIntegration *integration = nullptr; | - | ||||||||||||
64 | - | |||||||||||||
65 | if (!pluginPath.isEmpty()
| 0 | ||||||||||||
66 | QCoreApplication::addLibraryPath(pluginPath); | - | ||||||||||||
67 | integration = loadIntegration(directLoader(), key); | - | ||||||||||||
68 | } never executed: end of block | 0 | ||||||||||||
69 | if (!integration
| 0 | ||||||||||||
70 | integration = loadIntegration(loader(), key); never executed: integration = loadIntegration(loader(), key); | 0 | ||||||||||||
71 | if (integration
| 0 | ||||||||||||
72 | for (bool qt_category_enabled = qLcEglDevDebug().isDebugEnabled(); qt_category_enabled
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
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: integration;return integration; never executed: return integration; | 0 | ||||||||||||
80 | } | - | ||||||||||||
81 | - | |||||||||||||
82 | static int framebuffer = -1; | - | ||||||||||||
83 | - | |||||||||||||
84 | QByteArray QEGLDeviceIntegration::fbDeviceName() const | - | ||||||||||||
85 | { | - | ||||||||||||
86 | QByteArray fbDev = qgetenv("QT_QPA_EGLFS_FB"); | - | ||||||||||||
87 | if (fbDev.isEmpty()
| 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: ba;return 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: fbDev;return fbDev; never executed: return fbDev; | 0 | ||||||||||||
91 | } | - | ||||||||||||
92 | - | |||||||||||||
93 | int 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()
| 0 | ||||||||||||
100 | fbIndex = match.captured(1).toInt(); never executed: fbIndex = match.captured(1).toInt(); | 0 | ||||||||||||
101 | - | |||||||||||||
102 | return never executed: fbIndex;return fbIndex; never executed: return fbIndex; | 0 | ||||||||||||
103 | } | - | ||||||||||||
104 | - | |||||||||||||
105 | void QEGLDeviceIntegration::platformInit() | - | ||||||||||||
106 | { | - | ||||||||||||
107 | QByteArray fbDev = fbDeviceName(); | - | ||||||||||||
108 | - | |||||||||||||
109 | framebuffer = qt_safe_open(fbDev, 00); | - | ||||||||||||
110 | - | |||||||||||||
111 | if (framebuffer == -1
| 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 | - | |||||||||||||
121 | void QEGLDeviceIntegration::platformDestroy() | - | ||||||||||||
122 | { | - | ||||||||||||
123 | if (framebuffer != -1
| 0 | ||||||||||||
124 | close(framebuffer); never executed: close(framebuffer); | 0 | ||||||||||||
125 | } never executed: end of block | 0 | ||||||||||||
126 | - | |||||||||||||
127 | EGLNativeDisplayType QEGLDeviceIntegration::platformDisplay() const | - | ||||||||||||
128 | { | - | ||||||||||||
129 | return never executed: ((EGLNativeDisplayType)0);return ((EGLNativeDisplayType)0); never executed: return ((EGLNativeDisplayType)0); | 0 | ||||||||||||
130 | } | - | ||||||||||||
131 | - | |||||||||||||
132 | EGLDisplay QEGLDeviceIntegration::createDisplay(EGLNativeDisplayType nativeDisplay) | - | ||||||||||||
133 | { | - | ||||||||||||
134 | return never executed: eglGetDisplay(nativeDisplay);return eglGetDisplay(nativeDisplay); never executed: return eglGetDisplay(nativeDisplay); | 0 | ||||||||||||
135 | } | - | ||||||||||||
136 | - | |||||||||||||
137 | bool QEGLDeviceIntegration::usesDefaultScreen() | - | ||||||||||||
138 | { | - | ||||||||||||
139 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||
140 | } | - | ||||||||||||
141 | - | |||||||||||||
142 | void QEGLDeviceIntegration::screenInit() | - | ||||||||||||
143 | { | - | ||||||||||||
144 | - | |||||||||||||
145 | } | - | ||||||||||||
146 | - | |||||||||||||
147 | void 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()
| 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 | - | |||||||||||||
156 | QSizeF QEGLDeviceIntegration::physicalScreenSize() const | - | ||||||||||||
157 | { | - | ||||||||||||
158 | return never executed: q_physicalScreenSizeFromFb(framebuffer, screenSize());return q_physicalScreenSizeFromFb(framebuffer, screenSize()); never executed: return q_physicalScreenSizeFromFb(framebuffer, screenSize()); | 0 | ||||||||||||
159 | } | - | ||||||||||||
160 | - | |||||||||||||
161 | QSize QEGLDeviceIntegration::screenSize() const | - | ||||||||||||
162 | { | - | ||||||||||||
163 | return never executed: q_screenSizeFromFb(framebuffer);return q_screenSizeFromFb(framebuffer); never executed: return q_screenSizeFromFb(framebuffer); | 0 | ||||||||||||
164 | } | - | ||||||||||||
165 | - | |||||||||||||
166 | QDpi QEGLDeviceIntegration::logicalDpi() const | - | ||||||||||||
167 | { | - | ||||||||||||
168 | const QSizeF ps = physicalScreenSize(); | - | ||||||||||||
169 | const QSize s = screenSize(); | - | ||||||||||||
170 | - | |||||||||||||
171 | if (!ps.isEmpty()
| 0 | ||||||||||||
172 | return never executed: QDpi(25.4 * s.width() / ps.width(),return QDpi(25.4 * s.width() / ps.width(), 25.4 * s.height() / ps.height()); 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: QDpi(100, 100);return QDpi(100, 100); never executed: return QDpi(100, 100); | 0 | ||||||||||||
176 | } | - | ||||||||||||
177 | - | |||||||||||||
178 | qreal QEGLDeviceIntegration::pixelDensity() const | - | ||||||||||||
179 | { | - | ||||||||||||
180 | return never executed: qRound(logicalDpi().first / qreal(100));return qRound(logicalDpi().first / qreal(100)); never executed: return qRound(logicalDpi().first / qreal(100)); | 0 | ||||||||||||
181 | } | - | ||||||||||||
182 | - | |||||||||||||
183 | Qt::ScreenOrientation QEGLDeviceIntegration::nativeOrientation() const | - | ||||||||||||
184 | { | - | ||||||||||||
185 | return never executed: Qt::PrimaryOrientation;return Qt::PrimaryOrientation; never executed: return Qt::PrimaryOrientation; | 0 | ||||||||||||
186 | } | - | ||||||||||||
187 | - | |||||||||||||
188 | Qt::ScreenOrientation QEGLDeviceIntegration::orientation() const | - | ||||||||||||
189 | { | - | ||||||||||||
190 | return never executed: Qt::PrimaryOrientation;return Qt::PrimaryOrientation; never executed: return Qt::PrimaryOrientation; | 0 | ||||||||||||
191 | } | - | ||||||||||||
192 | - | |||||||||||||
193 | int QEGLDeviceIntegration::screenDepth() const | - | ||||||||||||
194 | { | - | ||||||||||||
195 | return never executed: q_screenDepthFromFb(framebuffer);return q_screenDepthFromFb(framebuffer); never executed: return q_screenDepthFromFb(framebuffer); | 0 | ||||||||||||
196 | } | - | ||||||||||||
197 | - | |||||||||||||
198 | QImage::Format QEGLDeviceIntegration::screenFormat() const | - | ||||||||||||
199 | { | - | ||||||||||||
200 | return never executed: screenDepth() == 16return screenDepth() == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
never executed: return screenDepth() == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32; | 0 | ||||||||||||
201 | } | - | ||||||||||||
202 | - | |||||||||||||
203 | qreal QEGLDeviceIntegration::refreshRate() const | - | ||||||||||||
204 | { | - | ||||||||||||
205 | return never executed: q_refreshRateFromFb(framebuffer);return q_refreshRateFromFb(framebuffer); never executed: return q_refreshRateFromFb(framebuffer); | 0 | ||||||||||||
206 | } | - | ||||||||||||
207 | - | |||||||||||||
208 | EGLint QEGLDeviceIntegration::surfaceType() const | - | ||||||||||||
209 | { | - | ||||||||||||
210 | return never executed: 0x0004;return 0x0004; never executed: return 0x0004; | 0 | ||||||||||||
211 | } | - | ||||||||||||
212 | - | |||||||||||||
213 | QSurfaceFormat 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
| 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: format;return format; never executed: return format; | 0 | ||||||||||||
225 | } | - | ||||||||||||
226 | - | |||||||||||||
227 | bool QEGLDeviceIntegration::filterConfig(EGLDisplay, EGLConfig) const | - | ||||||||||||
228 | { | - | ||||||||||||
229 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||
230 | } | - | ||||||||||||
231 | - | |||||||||||||
232 | QEglFSWindow *QEGLDeviceIntegration::createWindow(QWindow *window) const | - | ||||||||||||
233 | { | - | ||||||||||||
234 | return never executed: new QEglFSWindow(window);return new QEglFSWindow(window); never executed: return new QEglFSWindow(window); | 0 | ||||||||||||
235 | } | - | ||||||||||||
236 | - | |||||||||||||
237 | EGLNativeWindowType 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: 0;return 0; never executed: return 0; | 0 | ||||||||||||
245 | } | - | ||||||||||||
246 | - | |||||||||||||
247 | EGLNativeWindowType QEGLDeviceIntegration::createNativeOffscreenWindow(const QSurfaceFormat &format) | - | ||||||||||||
248 | { | - | ||||||||||||
249 | (void)format;; | - | ||||||||||||
250 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
251 | } | - | ||||||||||||
252 | - | |||||||||||||
253 | void QEGLDeviceIntegration::destroyNativeWindow(EGLNativeWindowType window) | - | ||||||||||||
254 | { | - | ||||||||||||
255 | (void)window;; | - | ||||||||||||
256 | } never executed: end of block | 0 | ||||||||||||
257 | - | |||||||||||||
258 | bool QEGLDeviceIntegration::hasCapability(QPlatformIntegration::Capability cap) const | - | ||||||||||||
259 | { | - | ||||||||||||
260 | (void)cap;; | - | ||||||||||||
261 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||
262 | } | - | ||||||||||||
263 | - | |||||||||||||
264 | QPlatformCursor *QEGLDeviceIntegration::createCursor(QPlatformScreen *screen) const | - | ||||||||||||
265 | { | - | ||||||||||||
266 | return never executed: new QEglFSCursor(screen);return new QEglFSCursor(screen); never executed: return new QEglFSCursor(screen); | 0 | ||||||||||||
267 | } | - | ||||||||||||
268 | - | |||||||||||||
269 | void QEGLDeviceIntegration::waitForVSync(QPlatformSurface *surface) const | - | ||||||||||||
270 | { | - | ||||||||||||
271 | (void)surface;; | - | ||||||||||||
272 | - | |||||||||||||
273 | - | |||||||||||||
274 | static const bool forceSync = qEnvironmentVariableIntValue("QT_QPA_EGLFS_FORCEVSYNC"); | - | ||||||||||||
275 | if (forceSync
| 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
| 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 | - | |||||||||||||
283 | void QEGLDeviceIntegration::presentBuffer(QPlatformSurface *surface) | - | ||||||||||||
284 | { | - | ||||||||||||
285 | (void)surface;; | - | ||||||||||||
286 | } never executed: end of block | 0 | ||||||||||||
287 | - | |||||||||||||
288 | bool QEGLDeviceIntegration::supportsPBuffers() const | - | ||||||||||||
289 | { | - | ||||||||||||
290 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||
291 | } | - | ||||||||||||
292 | - | |||||||||||||
293 | bool QEGLDeviceIntegration::supportsSurfacelessContexts() const | - | ||||||||||||
294 | { | - | ||||||||||||
295 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||
296 | } | - | ||||||||||||
297 | - | |||||||||||||
298 | void *QEGLDeviceIntegration::wlDisplay() const | - | ||||||||||||
299 | { | - | ||||||||||||
300 | return never executed: nullptr;return nullptr; never executed: return nullptr; | 0 | ||||||||||||
301 | } | - | ||||||||||||
302 | - | |||||||||||||
303 | - | |||||||||||||
Switch to Source code | Preprocessed file |