在嵌入式系统中,由于非常特定的硬件/软件限制,我们需要另一个程序才能通过帧缓冲区(/ dev/fb0)显示信息。 ,同时保持我们的Qt5/QML程序在后台运行。
第二个程序运行时,我们在QML中显示一个自定义的QQuickItem派生的黑色矩形(在update()中只有'return'),但我们仍然看到在我们的LCD显示屏上闪烁。
我们推测QT仍然在屏幕图上绘制(可能是矩形下方的其他项目)到/ dev/fb0,从而导致两个程序同时写入/ dev/fb0导致闪烁。
我们不能使用第二种帧缓冲方法(/ dev/fb1),因为合成会显着增加处理器负载,导致系统无法使用。
一个想法是遍历屏幕图形树,标记所有节点的ItemHasContents标志为false,因此屏幕图形渲染器不会写入FB,然后在次要程序完成其任务时重新启用。
另一个想法是通过顶层QWindow关闭渲染,但文档中没有任何内容说这甚至是可能的......
这是可能通过QT,或者即使是一个shell脚本?暂时停止Qt5/QML更新framebuffer(/ dev/fb0)
1
A
回答
0
/dev/fb0
听起来像你会在基于Linux的系统上工作。
你并不是说你是否需要Qt应用程序真的继续运行,没有屏幕更新,或者只是“冻结”它,而其他应用程序使用帧缓冲区就足够了。
如果你对后者很满意,停止Qt应用程序渲染的最简单的解决方案是发送一个SIGSTOP信号,它会冻结并停止升级帧缓冲区。一旦你完成了fb,发送一个SIGCONT信号。有时,最简单的方法是最好的...
+0
临时让Qt应用程序写入离屏帧缓冲区我们实际上需要它运行这就是我们试图避免使用SIGSTOP?SIGCONT路由的原因。我们有一些通信线程可以让事情保持在后台,并且需要满足一些关键的时序要求。 – Gio
相关问题
- 1. 暂停从更新
- 2. 暂时停止ECS集群
- 3. NSThread停止/暂停
- 4. JavaScript停止暂停
- 5. 数据更新时暂停Excel图形
- 6. 如何暂停/停止更新UWP C中的地理位置#
- 7. 当活动暂停时Runnable停止
- 8. LibGDX停止时间计数器暂停
- 9. 停止/暂停.runActionForever()SCNAction
- 10. 行文中:暂停,停止
- 11. C#暂停/停止的System.Diagnostics.Process
- 12. 暂停和停止线程
- 13. 如何在缩放时暂时停止刷新Primefaces折线图
- 14. NSManagedObject停止更新
- 15. 如何在主线程停止/暂停线程/ Activity在android中暂停/停止?
- 16. 如何阻止mediaelement.js播放器在暂停/停止时下载?
- 17. 防止LibGDX游戏在暂停时完全停止
- 18. Android,在活动暂停或停止时终止线程?
- 19. 暂时停止功能的jQuery
- 20. 如何暂时停止碰撞检查
- 21. 暂停PHP脚本,以防止超时
- 22. 暂时停止一个控制流程
- 23. 暂时停止jenkins管道工作
- 24. 时停止执行删除和更新
- 25. 代码更新时停止uwsgi
- 26. 更新对象时,活动停止
- 27. 停止在Android的更新时间
- 28. 如何暂时停止Resque Queues处理新作业?
- 29. 任何方式来暂时停止布局重新计算?
- 30. 按钮来暂时禁用/停止元标记刷新?
你有没有打过电话'调用setVisible在顶层QWindow(假)'? –
也许值得研究是否从UI线程进行长阻塞函数调用将停止应用程序写入帧缓冲区。就像使用select()来阻止观看stdin所需的ms数,然后超时并继续。对不起,我无法尝试它,我没有使用qt的设备直接使用fb –
或者让第二个进程使用'kill -STOP'和'kill -CONT'来暂停Qt应用程序。这听起来有点危险,但如果Qt应用程序是通过IO访问的一半。显然,如果Qt应用程序需要在此间隔期间保持任何实时活动,则这两者都不可接受 –