C
在 INTEGRITY 上运行示例
有关如何为 INTEGRITY 构建示例的说明,请参阅 构建 INTEGRITY。这些说明提供了构建 INTEGRITY 上 Qt 安全渲染器的总体步骤。
但是,请注意,这些步骤假设您已经具有在 INTEGRITY 环境中工作的经验。如果您需要有关如何为 INTEGRITY 构建 Qt 安全渲染器的更多详细信息,您可以联系 Qt 咨询服务。
运行 Qt 集群示例的解决方案
INTEGRITY 中的 Qt 集群示例存在已知错误 QTAUTO-1003。错误描述在 1.6 节的发行说明中。您可以在 <Qt 安装目录>/Docs/QtSafeRenderer-<版本> 中找到发行说明。以下代码更改提供了解决错误的解决方案,直到提供正确修复为止。
要包含 INTEGRITY 所需的文件,请按照以下方式更新 <Qt 安装目录>/Examples/QtSafeRenderer-<版本>/saferenderer/qtcluster/main.cpp
#include "etcprovider.h" #include "crasher.h" #ifdef Q_OS_INTEGRITY #include <mqueue.h> #include <unistd.h> #define ATTACH_POINT "saferenderer" #endif
要添加实际解决方案功能,请按照以下方式更新 <Qt 安装目录>/Examples/QtSafeRenderer-<版本>/saferenderer/qtcluster/main.cpp
qputenv("QT_QPA_WM_DISP_ID", "0"); qputenv("QT_QPA_WM_LAYER", "3"); #ifdef Q_OS_INTEGRITY sleep(10); mqd_t mqdes; if ((mqdes = mq_open(ATTACH_POINT, O_WRONLY)) != MQ_FAILED) { qWarning() << "Dummy op success"; mq_close(mqdes); } else { qFatal("Failed to open connection to safe renderer. Dummy."); } #endif QGuiApplication app(argc, argv);
以下代码提供所有必需更新的 .patch 文件格式
diff --git a/examples/qtcluster/main.cpp b/examples/qtcluster/main.cpp index 0c7e836..4fbd3e9 100644 --- a/examples/qtcluster/main.cpp +++ b/examples/qtcluster/main.cpp @@ -65,6 +65,11 @@ #include "etcprovider.h" #include "crasher.h" +#ifdef Q_OS_INTEGRITY +#include <mqueue.h> +#include <unistd.h> +#define ATTACH_POINT "saferenderer" +#endif int main(int argc, char **argv) { @@ -78,6 +83,18 @@ int main(int argc, char **argv) qputenv("QT_QPA_WM_DISP_ID", "0"); qputenv("QT_QPA_WM_LAYER", "3"); + #ifdef Q_OS_INTEGRITY + sleep(10); + mqd_t mqdes; + + if ((mqdes = mq_open(ATTACH_POINT, O_WRONLY)) != MQ_FAILED) { + qWarning() << "Dummy op success"; + mq_close(mqdes); + } else { + qFatal("Failed to open connection to safe renderer. Dummy."); + } + #endif + QGuiApplication app(argc, argv); //Find the ip address to the environment variable
在某些 Qt 许可下提供。
了解更多。