summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp24
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.h3
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp8
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.h1
4 files changed, 27 insertions, 9 deletions
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
index a6d964dcb0..45dccfa79f 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -80,13 +80,8 @@ static void *eglContextForContext(QOpenGLContext *context);
QEglFSIntegration::QEglFSIntegration()
: mFontDb(new QGenericUnixFontDatabase)
, mServices(new QGenericUnixServices)
+ , mInputContext(0)
{
-#if !defined(QT_NO_EVDEV) && (!defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK))
- new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this);
- new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
- new QEvdevTouchScreenHandlerThread(QString() /* spec */, this);
-#endif
-
QEglFSHooks::hooks()->platformInit();
EGLint major, minor;
@@ -109,8 +104,6 @@ QEglFSIntegration::QEglFSIntegration()
mScreen = new QEglFSScreen(mDisplay);
screenAdded(mScreen);
-
- mInputContext = QPlatformInputContextFactory::create();
}
QEglFSIntegration::~QEglFSIntegration()
@@ -170,6 +163,12 @@ QAbstractEventDispatcher *QEglFSIntegration::createEventDispatcher() const
return createUnixEventDispatcher();
}
+void QEglFSIntegration::initialize()
+{
+ mInputContext = QPlatformInputContextFactory::create();
+ createInputHandlers();
+}
+
QVariant QEglFSIntegration::styleHint(QPlatformIntegration::StyleHint hint) const
{
switch (hint)
@@ -309,4 +308,13 @@ EGLConfig QEglFSIntegration::chooseConfig(EGLDisplay display, const QSurfaceForm
return chooser.chooseConfig();
}
+void QEglFSIntegration::createInputHandlers()
+{
+#if !defined(QT_NO_EVDEV) && (!defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK))
+ new QEvdevKeyboardManager(QLatin1String("EvdevKeyboard"), QString() /* spec */, this);
+ new QEvdevMouseManager(QLatin1String("EvdevMouse"), QString() /* spec */, this);
+ new QEvdevTouchScreenHandlerThread(QString() /* spec */, this);
+#endif
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h
index 4e24e2f2f7..a6fcfc8427 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.h
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.h
@@ -68,6 +68,7 @@ public:
QPlatformServices *services() const;
QAbstractEventDispatcher *createEventDispatcher() const;
+ void initialize();
QVariant styleHint(QPlatformIntegration::StyleHint hint) const;
@@ -86,6 +87,8 @@ public:
QPlatformInputContext *inputContext() const { return mInputContext; }
private:
+ void createInputHandlers();
+
EGLDisplay mDisplay;
QScopedPointer<QPlatformFontDatabase> mFontDb;
QScopedPointer<QPlatformServices> mServices;
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 2249446242..5168bd818b 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -172,7 +172,6 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char
}
m_fontDatabase.reset(new QGenericUnixFontDatabase());
- m_inputContext.reset(QPlatformInputContextFactory::create());
}
QXcbIntegration::~QXcbIntegration()
@@ -292,6 +291,13 @@ QAbstractEventDispatcher *QXcbIntegration::createEventDispatcher() const
return createUnixEventDispatcher();
}
+void QXcbIntegration::initialize()
+{
+ // Perform everything that may potentially need the event dispatcher (timers, socket
+ // notifiers) here instead of the constructor.
+ m_inputContext.reset(QPlatformInputContextFactory::create());
+}
+
void QXcbIntegration::moveToScreen(QWindow *window, int screen)
{
Q_UNUSED(window);
diff --git a/src/plugins/platforms/xcb/qxcbintegration.h b/src/plugins/platforms/xcb/qxcbintegration.h
index 008d03fbcb..79fb1965c4 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.h
+++ b/src/plugins/platforms/xcb/qxcbintegration.h
@@ -68,6 +68,7 @@ public:
bool hasCapability(Capability cap) const;
QAbstractEventDispatcher *createEventDispatcher() const;
+ void initialize();
void moveToScreen(QWindow *window, int screen);