0

我有一个在 EGLFS 平台上运行的 QML / C++ 应用程序。但是,我发现当应用程序自行终止时,尽管应用程序的进程本身确实死了,但它不会释放屏幕,直到应用程序使用创建的任何进程QProcess::startDetached()也完成。

这是一个问题,因为应用程序需要在某一时刻重新启动自身,并通过在/etc/init.d/.

该脚本会停止应用程序,然后再次启动它。但是,由于应用程序再次启动时脚本尚未完成,应用程序的先前实例尚未释放屏幕,等等新实例我收到此错误:

致命错误:EGL 错误:无法创建 egl 表面:错误 = 0x3003

...如果我在应用程序已经运行时尝试运行它,我会遇到同样的错误。

如果说,我会得到类似的效果...

QProcess::startDetached("/bin/sh", QStringList() << "-c" << "sleep 60", QString(), &sleepPid);
QProcess::startDetached("/bin/sh", QStringList() << "-c" << "/etc/init.d/myApplication stop", QString(), &stopPid); // The script that terminates the application.

即使sleep 60确实在后台运行并且stop脚本立即启动并成功结束了该过程,但屏幕会变成白色,然后在最终(sleep结束时)关闭之前 60 秒内什么也不做。

我如何让它忽略它创建的正在进行的进程并完全终止?

4

0 回答 0