diff options
author | James McDonnell <jmcdonnell@blackberry.com> | 2018-04-26 15:56:37 -0400 |
---|---|---|
committer | James McDonnell <jmcdonnell@blackberry.com> | 2018-05-04 14:21:08 +0000 |
commit | aadc294f2dd1c7e94a997f5797bc83b34d2c59ff (patch) | |
tree | 8f5930dfcd243d4ba3a35462836ac02517127c78 /src/plugins/platforms/qnx | |
parent | fc356a1992753059be34929959ed252e19ff5c7a (diff) |
QNX: Add screen-context-capabilities platform parameter
Specifies the flags value for the screen_context_create call allowing
the Qt application to take on additional screen capabilities via the
Qt screen context.
Change-Id: Ic7aa478227e64afe2d1d7d04ec58c11ad68b9f22
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Diffstat (limited to 'src/plugins/platforms/qnx')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxintegration.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/platforms/qnx/qqnxintegration.cpp b/src/plugins/platforms/qnx/qqnxintegration.cpp index fa8746c684..91cb4aba20 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 |