MiniGUI 5.0 正式发布,嵌入式 GUI 系统
飞漫软件于 2020 年 3 月 30 日宣布,正式发布 MiniGUI 5.0.0/4.0.7 版本,并同时更新 HybridOS 图形栈。
MiniGUI 是一个自由软件项目,其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)。它被广泛应用于 IoT 智能设备及实时嵌入式系统,为 IoT 智能设备和嵌入式系统提供 GUI 及交互实现,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。
MiniGUI 5.0 主要带来了三项全新特性:
- 合成图式
- 八种主窗口 Z 序级别
- 虚拟窗口
合成图式
自 MiniGUI 5.0.0 起,MiniGUI 的多进程模式开始支持合成图式(compositing schema)。合成图式是现代桌面操作系统和智能手机操作系统的图形及窗口系统使用的技术,其基本原理很简单:系统中所有进程创建的每一个窗口都使用独立的缓冲区来各自渲染其内容,而系统中有一个扮演合成器(compositor)角色的进程,负责将这些内容根据窗口的 Z 序以及叠加效果(如半透明、模糊等)合成在一起并最终显示在屏幕上。
合成图式为窗口系统提供各种视觉效果和新奇交互效果带来了可能。在合成图式之前,大部分窗口系统使用共享缓冲区图式,通过管理和维护窗口的层叠关系以及相互之间的剪切来实现多窗口的管理。传统的共享缓冲区图式很难在多进程环境下实现不规则窗口、半透明或模糊叠加效果,而合成图式则可以轻松解决这些问题,而且还可以方便实现窗口切换时的动画效果。
合成图式是 MiniGUI 5.0 最为重要的一项新特性。尽管这一特性的实现需要调整 MiniGUI 最为核心的窗口管理部分,但我们仍然保证了 API 的基本稳定性:任何一个针对 MiniGUI 5.0 之前版本开发的应用,都可以不用做任何修改,重新编译即可运行在合成图式下。要使用合成图式带来的激动人心的功能,也只需要做一些不多的改动。
合成图式的支持让 MiniGUI 的应用领域得到了进一步扩展。以前,MiniGUI 被主要用于不安装第三方应用的电子产品中,如功能手机、视频监控、工业控制、医疗仪器等。而有了合成图式,MiniGUI 还可以应用在桌面电脑、智能手机等可能支持第三方应用的设备中。因为合成图式不仅仅便于实现各种图形及交互效果,还可以充分利用多进程环境的安全性:除了服务器进程之外,没有任何一个进程可以访问其他进程创建的窗口内容。
合成图式的实现涉及到进程间通讯技术、共享缓冲区技术、图形加速技术等多项技术,而笔者只花了三个月就实现了这个功能(还包括其他增强)。这得益于飞漫软件在长达二十年的开发周期中对操作系统、图形以及交互技术的深厚理解。这也从侧面反应了一个事实,基础软件的发展需要时间和积淀;或者说,长期的技术积累是基础软件可以快速迭代和发展的基础。
除了实现了合成图式,MiniGUI 5.0 同时提供了如下能力:
-
客户可定制自己的合成器(compositor),并通过加载动态库的形式装载自定义合成器或者第三方合成器。
-
MiniGUI 作为飞漫软件发起的另外一个开源项目 HybridOS 的窗口系统,随着 5.0.0 版本的正式发布,飞漫软件还同时更新了 HybridOS 的图形栈,提供了开发加速图形引擎的接口以及支持 OpenGL/ES 等 3D 图形的完整软件栈。
八种主窗口 Z 序级别
MiniGUI 5.0 版本还增强了 MiniGUI 的窗口管理器以支持某些特殊的主窗口类型。
在 MiniGUI 5.0 之前,我们可以创建一些特殊主窗口,以便在所有普通主窗口的上方显示这些主窗口,如果使用 MiniGUI 的多进程运行模式,则服务器(mginit)将始终创建全局主窗口,这些窗口显示在所有客户创建的主窗口之上。而从 5.0.0 开始,我们引入了主窗口 Z 序级别的概念,从上到下共有八个级别:
-
工具提示级别。
-
系统/全局级别。
-
屏幕锁定级别。
-
泊坞窗级别。
-
更高级别。
-
普通级别。
-
启动器级别。
-
桌面或墙纸。
这项增强功能使我们可以创建一些特殊的应用,该应用可以作为锁屏、通知栏、程序坞或者启动器使用。
虚拟窗口
MiniGUI 为基于消息的通讯机制提供了完整的支持。在 MiniGUI 的多线程运行模式下,我们可以在一个线程中向运行在其他线程中的窗口邮寄或发送消息。MiniGUI 消息传递函数,如 PostMessage、SendMessage、SendNotifyMessage 以及窗口回调过程,为多线程应用程序提供了灵活、高效、安全的数据传输和同步机制。使用这些接口,多线程应用可避免自行维护复杂的线程锁、信号量等东西,从而简化编程模型。
但在 MiniGUI 5.0 之前,以独立进程模式或者多进程模式下运行的 MiniGUI 不支持线程间的消息传递能力。在 MiniGUI 5.0 中,我们取消了这一限制,并引入了虚拟窗口的概念。
虚拟窗口是一个特殊的窗口对象,没有可见的窗口区域。但是,在其他线程中创建虚拟窗口之后,可以使用 MiniGUI 的消息传递机制在可见的窗口线程和虚拟窗口所在的线程之间邮寄或发送消息。
此增强功能为基于 MiniGUI 的应用开发提供了非常有用的基础设施,以开发设计良好的多线程应用程序。
除了以上三个主要的增强之外,MiniGUI 5.0 还调整了一些底层架构,重构了一些底层模块。有兴趣的读者可以阅读完整的发布说明文档:
https://gitlab.fmsoft.cn/VincentWei/minigui/blob/rel-5-0/RELEASE-NOTES.md
最后,附上 MiniGUI 5.0 的入口仓库:
https://gitlab.fmsoft.cn/VincentWei/build-minigui-5.0
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Visual Studio 2019 16.6 Preview 2 发布
微软方面宣布了Visual Studio 2019 16.6 Preview 2版本的发布,该版本附带了一些新功能,以供用户立即试用。具体更新内容如下: Version Control:开发团队正在改进 Git 功能,以在使用远程 Git 托管服务上的代码时提供更好的体验。同时,此功能还简化了以前位于 Team Explorer 中的 Git 复杂导航。 改进的Snapshot Debugging体验:用户现在无需重新启动就可以在 Azure App Services(ASP.NET Core 3.1)上安装Snapshot Debugger。这使用户能够调试和诊断实时问题,而不会中断服务。 新的 .NET Async工具:该版本中带有一个新的 .NET Async 工具,作为 Performance Profiler 工具套件的一部分。这使了解和优化 .NET 中的async/await代码更加容易。基本上,用户可以使用此工具来获取各种任务的确切计时信息,包括它们等待分派到线程的时间、完成任务所需的时间以及任务是否链接在一起。 新的多目标 JavaScript / TypeScrip...
- 下一篇
ActionView 1.10.3 发布,更好用的团队敏捷开发工具
ActionView 1.10.3 新版本已发布,docker镜像也同步发布,新版本做了以下内容的更新: 增加了问题的批量操作功能; 修复了流程权限项选择的bug; 修复了部分问题活动日志重复显示的问题; 优化了wiki和文档的排序样式; 修复了一些小问题; 优势: 支持用户创建项目,项目不仅可引用全局配置方案,也可自定义本地方案,实现了全局配置方案和本地配置方案的完美结合。 各项目不仅可引用系统默认工作流,同时可自定义自己的工作流,工作流的每一步可进行精细控制,确保正确的人在正确的时间执行正确的操作。 支持敏捷开发的看板视图(Kanban和Scrum)。 支持甘特图视图。 简单易用的问题界面配置。 强大的问题筛选功能,可定义自己的过滤器。 完备的权限控制模型,支持给用户组授权。 灵活可定制的消息通知方案。 不仅可查看某个问题的改动记录,还可浏览整个项目的活动日志。 支持用户在问题上添加工作日志。 支持用户针对问题发表评论。 团队成员可分享和查找工作所需的资料文档。 支持基于markdown语法的wiki。 支持各种维度的统计报表。 支持基于LDAP用户的同步和认证。 通过WebHoo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块