From aadc294f2dd1c7e94a997f5797bc83b34d2c59ff Mon Sep 17 00:00:00 2001 From: James McDonnell Date: Thu, 26 Apr 2018 15:56:37 -0400 Subject: 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 Reviewed-by: Rafael Roquetto --- src/plugins/platforms/qnx/qqnxintegration.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src') 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 -- cgit v1.2.3