Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qeglfsvivwlintegration.cpp
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// Qt-Security score:significant reason:default
4
6#include <EGL/eglvivante.h>
7#include <QDebug>
8
9#include <wayland-server.h>
10
11QT_BEGIN_NAMESPACE
12
13void QEglFSVivWaylandIntegration::platformInit()
14{
15 QEglFSDeviceIntegration::platformInit();
16
17 int width, height;
18
19 bool multiBufferNotEnabledYet = qEnvironmentVariableIsEmpty("FB_MULTI_BUFFER");
20 bool multiBuffer = qEnvironmentVariableIsEmpty("QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER");
21 if (multiBufferNotEnabledYet && multiBuffer) {
22 qWarning() << "QEglFSVivWaylandIntegration will set environment variable FB_MULTI_BUFFER=2 to enable double buffering and vsync.\n"
23 << "If this is not desired, you can override this via: export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1";
24 qputenv("FB_MULTI_BUFFER", "2");
25 }
26
27 mWaylandDisplay = wl_display_create();
28 mNativeDisplay = static_cast<EGLNativeDisplayType>(fbGetDisplay(mWaylandDisplay));
29 fbGetDisplayGeometry(mNativeDisplay, &width, &height);
30 mScreenSize.setHeight(height);
31 mScreenSize.setWidth(width);
32}
33
34void QEglFSVivWaylandIntegration::platformDestroy()
35{
36 wl_display_destroy(mWaylandDisplay);
37}
38
39QSize QEglFSVivWaylandIntegration::screenSize() const
40{
41 return mScreenSize;
42}
43
44EGLNativeDisplayType QEglFSVivWaylandIntegration::platformDisplay() const
45{
46 return mNativeDisplay;
47}
48
49EGLNativeWindowType QEglFSVivWaylandIntegration::createNativeWindow(QPlatformWindow *window, const QSize &size, const QSurfaceFormat &format)
50{
51 Q_UNUSED(window);
52 Q_UNUSED(format);
53
54 EGLNativeWindowType eglWindow = static_cast<EGLNativeWindowType>(fbCreateWindow(mNativeDisplay, 0, 0, size.width(), size.height()));
55 return eglWindow;
56}
57
58void QEglFSVivWaylandIntegration::destroyNativeWindow(EGLNativeWindowType window)
59{
60 fbDestroyWindow(window);
61}
62
63void *QEglFSVivWaylandIntegration::wlDisplay() const
64{
65 return mWaylandDisplay;
66}
67
68
69QT_END_NAMESPACE