diff options
author | Elvis Lee <kwangwoong.lee@lge.com> | 2020-12-28 16:08:24 +0900 |
---|---|---|
committer | Elvis Lee <kwangwoong.lee@lge.com> | 2021-02-17 19:47:51 +0900 |
commit | 595b4d3428dbf9107c5e6bd62ef3c401d4ef2a18 (patch) | |
tree | a9ab9f83466dd6779ed5ad86a8fcbb62404ab706 /src/client/qwaylandintegration.cpp | |
parent | 23ebb5fc41a94918e01d97872491724280c4b1c2 (diff) |
Support platform specific implementation
QtWaylandClient can be inherited to support platform specific
implementaton.
Change-Id: Ie0f4aa28dbb2dcd6b1245cb14e23f3b45e687400
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/client/qwaylandintegration.cpp')
-rw-r--r-- | src/client/qwaylandintegration.cpp | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp index 868cdd615..f2f9174f1 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -52,6 +52,7 @@ #include "qwaylanddnd_p.h" #include "qwaylandwindowmanagerintegration_p.h" #include "qwaylandscreen_p.h" +#include "qwaylandcursor_p.h" #if defined(Q_OS_MACOS) # include <QtGui/private/qcoretextfontdatabase_p.h> @@ -112,22 +113,12 @@ QWaylandIntegration::QWaylandIntegration() #else : mFontDb(new QGenericUnixFontDatabase()) #endif - , mNativeInterface(new QWaylandNativeInterface(this)) { - initializeInputDeviceIntegration(); mDisplay.reset(new QWaylandDisplay(this)); if (!mDisplay->isInitialized()) { mFailed = true; return; } -#if QT_CONFIG(clipboard) - mClipboard.reset(new QWaylandClipboard(mDisplay.data())); -#endif -#if QT_CONFIG(draganddrop) - mDrag.reset(new QWaylandDrag(mDisplay.data())); -#endif - - reconfigureInputContext(); } QWaylandIntegration::~QWaylandIntegration() @@ -193,8 +184,30 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const return createUnixEventDispatcher(); } +QPlatformNativeInterface *QWaylandIntegration::createPlatformNativeInterface() +{ + return new QWaylandNativeInterface(this); +} + +void QWaylandIntegration::initializePlatform() +{ + mNativeInterface.reset(createPlatformNativeInterface()); + initializeInputDeviceIntegration(); +#if QT_CONFIG(clipboard) + mClipboard.reset(new QWaylandClipboard(mDisplay.data())); +#endif +#if QT_CONFIG(draganddrop) + mDrag.reset(new QWaylandDrag(mDisplay.data())); +#endif + + reconfigureInputContext(); +} + void QWaylandIntegration::initialize() { + // Support platform specicif initialization + initializePlatform(); + QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher; QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests())); QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests())); @@ -282,6 +295,16 @@ QPlatformTheme *QWaylandIntegration::createPlatformTheme(const QString &name) co return QGenericUnixTheme::createUnixTheme(name); } +QWaylandScreen *QWaylandIntegration::createPlatformScreen(QWaylandDisplay *waylandDisplay, int version, uint32_t id) const +{ + return new QWaylandScreen(waylandDisplay, version, id); +} + +QWaylandCursor *QWaylandIntegration::createPlatformCursor(QWaylandDisplay *display) const +{ + return new QWaylandCursor(display); +} + #if QT_CONFIG(vulkan) QPlatformVulkanInstance *QWaylandIntegration::createPlatformVulkanInstance(QVulkanInstance *instance) const { @@ -418,7 +441,7 @@ void QWaylandIntegration::initializeShellIntegration() QWindowSystemInterfacePrivate::TabletEvent::setPlatformSynthesizesMouse(false); } -QWaylandInputDevice *QWaylandIntegration::createInputDevice(QWaylandDisplay *display, int version, uint32_t id) +QWaylandInputDevice *QWaylandIntegration::createInputDevice(QWaylandDisplay *display, int version, uint32_t id) const { if (mInputDeviceIntegration) { return mInputDeviceIntegration->createInputDevice(display, version, id); |