diff options
Diffstat (limited to 'src/plugins/platforms/qnx/qqnxintegration.cpp')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxintegration.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp index 6085cd34c0..4aaade402a 100644 --- a/src/plugins/platforms/qnx/qqnxintegration.cpp +++ b/src/plugins/platforms/qnx/qqnxintegration.cpp @@ -120,6 +120,22 @@ static inline QQnxIntegration::Options parseOptions(const QStringList ¶mList return options; } +static inline int getContextCapabilities(const QStringList ¶mList) +{ + QString contextCapabilitiesPrefix = QStringLiteral("screen-context-capabilities="); + int contextCapabilities = SCREEN_APPLICATION_CONTEXT; + for (const QString ¶m : paramList) { + if (param.startsWith(contextCapabilitiesPrefix)) { + QStringRef value = param.midRef(contextCapabilitiesPrefix.length()); + bool ok = false; + contextCapabilities = value.toInt(&ok, 0); + if (!ok) + contextCapabilities = SCREEN_APPLICATION_CONTEXT; + } + } + return contextCapabilities; +} + QQnxIntegration::QQnxIntegration(const QStringList ¶mList) : QPlatformIntegration() , m_screenEventThread(0) @@ -145,9 +161,12 @@ QQnxIntegration::QQnxIntegration(const QStringList ¶mList) { ms_options = parseOptions(paramList); qIntegrationDebug(); + // Open connection to QNX composition manager - Q_SCREEN_CRITICALERROR(screen_create_context(&ms_screenContext, SCREEN_APPLICATION_CONTEXT), - "Failed to create screen context"); + if (screen_create_context(&ms_screenContext, getContextCapabilities(paramList))) { + qFatal("%s - Screen: Failed to create screen context - Error: %s (%i)", + Q_FUNC_INFO, strerror(errno), errno); + } #if QT_CONFIG(qqnx_pps) // Create/start navigator event notifier @@ -164,7 +183,8 @@ QQnxIntegration::QQnxIntegration(const QStringList ¶mList) #endif // Create/start event thread - m_screenEventThread = new QQnxScreenEventThread(ms_screenContext, m_screenEventHandler); + m_screenEventThread = new QQnxScreenEventThread(ms_screenContext); + m_screenEventHandler->setScreenEventThread(m_screenEventThread); m_screenEventThread->start(); #if QT_CONFIG(qqnx_pps) |