7#include "qlinuxfbdrmscreen.h"
10#include <QtGui/private/qgenericunixfontdatabase_p.h>
11#include <QtGui/private/qgenericunixeventdispatcher_p.h>
12#include <qpa/qplatformservices.h>
14#include <QtFbSupport/private/qfbvthandler_p.h>
15#include <QtFbSupport/private/qfbbackingstore_p.h>
16#include <QtFbSupport/private/qfbwindow_p.h>
17#include <QtFbSupport/private/qfbcursor_p.h>
19#include <QtGui/private/qguiapplication_p.h>
20#include <qpa/qplatforminputcontextfactory_p.h>
21#include <qpa/qwindowsysteminterface.h>
23#if QT_CONFIG(libinput)
24#include <QtInputSupport/private/qlibinputhandler_p.h>
28#include <QtInputSupport/private/qevdevmousemanager_p.h>
29#include <QtInputSupport/private/qevdevkeyboardmanager_p.h>
30#include <QtInputSupport/private/qevdevtouchmanager_p.h>
34#include <QtInputSupport/private/qtslib_p.h>
39using namespace Qt::StringLiterals;
42 : m_primaryScreen(
nullptr),
43 m_fontDb(
new QGenericUnixFontDatabase)
46 if (qEnvironmentVariableIntValue(
"QT_QPA_FB_DRM") != 0)
47 m_primaryScreen =
new QLinuxFbDrmScreen(paramList);
50 m_primaryScreen =
new QLinuxFbScreen(paramList);
53QLinuxFbIntegration::~QLinuxFbIntegration()
55 QWindowSystemInterface::handleScreenRemoved(m_primaryScreen);
58void QLinuxFbIntegration::initialize()
60 if (m_primaryScreen->initialize())
61 QWindowSystemInterface::handleScreenAdded(m_primaryScreen);
63 qWarning(
"linuxfb: Failed to initialize screen");
65 m_inputContext = QPlatformInputContextFactory::create();
67 m_vtHandler.reset(
new QFbVtHandler);
69 if (!qEnvironmentVariableIntValue(
"QT_QPA_FB_DISABLE_INPUT"))
70 createInputHandlers();
73bool QLinuxFbIntegration::hasCapability(QPlatformIntegration::Capability cap)
const
76 case ThreadedPixmaps:
return true;
77 case WindowManagement:
return false;
78 case RhiBasedRendering:
return false;
79 default:
return QPlatformIntegration::hasCapability(cap);
83QPlatformBackingStore *QLinuxFbIntegration::createPlatformBackingStore(QWindow *window)
const
85 return new QFbBackingStore(window);
88QPlatformWindow *QLinuxFbIntegration::createPlatformWindow(QWindow *window)
const
90 return new QFbWindow(window);
93QAbstractEventDispatcher *QLinuxFbIntegration::createEventDispatcher()
const
95 return createUnixEventDispatcher();
98QList<QPlatformScreen *> QLinuxFbIntegration::screens()
const
100 QList<QPlatformScreen *> list;
101 list.append(m_primaryScreen);
105QPlatformFontDatabase *QLinuxFbIntegration::fontDatabase()
const
107 return m_fontDb.data();
110QPlatformServices *QLinuxFbIntegration::services()
const
112 if (m_services.isNull())
113 m_services.reset(
new QPlatformServices);
115 return m_services.data();
118void QLinuxFbIntegration::createInputHandlers()
120#if QT_CONFIG(libinput)
121 if (!qEnvironmentVariableIntValue(
"QT_QPA_FB_NO_LIBINPUT")) {
122 new QLibInputHandler(
"libinput"_L1, QString());
128 bool useTslib = qEnvironmentVariableIntValue(
"QT_QPA_FB_TSLIB");
130 new QTsLibMouseHandler(
"TsLib"_L1, QString());
134 m_kbdMgr =
new QEvdevKeyboardManager(
"EvdevKeyboard"_L1, QString(),
this);
135 new QEvdevMouseManager(
"EvdevMouse"_L1, QString(),
this);
139 new QEvdevTouchManager(
"EvdevTouch"_L1, QString() ,
this);
143QPlatformNativeInterface *QLinuxFbIntegration::nativeInterface()
const
145 return const_cast<QLinuxFbIntegration *>(
this);
148QFunctionPointer QLinuxFbIntegration::platformFunction(
const QByteArray &function)
const
155void QLinuxFbIntegration::loadKeymap(
const QString &filename)
158 m_kbdMgr->loadKeymap(filename);
160 qWarning(
"QLinuxFbIntegration: Cannot load keymap, no keyboard handler found");
163void QLinuxFbIntegration::switchLang()
166 m_kbdMgr->switchLang();
168 qWarning(
"QLinuxFbIntegration: Cannot switch language, no keyboard handler found");
QLinuxFbIntegration(const QStringList ¶mList)