《全局合成系统.pdf》由会员分享,可在线阅读,更多相关《全局合成系统.pdf(19页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103562862 A (43)申请公布日 2014.02.05 CN 103562862 A (21)申请号 201180071359.2 (22)申请日 2011.10.09 13/152,133 2011.06.02 US G06F 9/44(2006.01) G06F 3/14(2006.01) (71)申请人 微软公司 地址 美国华盛顿州 (72)发明人 L.E.布兰科 S.P.蒙卡尤 R.芬克 (74)专利代理机构 中国专利代理(香港)有限公 司 72001 代理人 陈慧 汪扬 (54) 发明名称 全局合成系统 (57) 摘要 本发明描述了一种全局合成系统。
2、。在一个或 多个实施方式中, 全局合成系统可以被配置成执 行用于多个应用程序的再现。例如, 全局合成系 统可以被配置成显露出应用程序可访问的一个或 多个应用编程接口 (API) 。然后 API 可以被用来 使得单合成引擎执行用于所述多个应用程序的再 现。单个合成引擎的使用可以被用来支持多种不 同的功能, 从而通过知道所述应用程序中的每一 个提供了什么元素以及这些项目如何与至显示设 备的再现相关而执行高效的再现。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2013.12.02 (86)PCT国际申请的申请数据 PCT/US2011/055531 2011.10.09 (87)PC。
3、T国际申请的公布数据 WO2012/166189 EN 2012.12.06 (51)Int.Cl. 权利要求书 1 页 说明书 11 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书11页 附图6页 (10)申请公布号 CN 103562862 A CN 103562862 A 1/1 页 2 1. 一种包括至少部分地在硬件中实现的一个或多个模块的系统, 所述一个或多个模块 被配置成实现可经由到多个应用程序的一个或多个应用编程接口访问的单个合成引擎, 所 述合成引擎被配置成接收描述来自所述多个应用程序的每一个的、 要被所述合成引擎再现 以便。
4、显示在显示设备上的元素的数据。 2. 如权利要求 1 所述的系统, 其中所述元素包括与第一所述应用程序对应的第一窗口 和与第二所述应用程序对应的第二窗口。 3. 如权利要求 1 所述的系统, 其中第一所述元素由第一所述应用程序提供并且第二所 述元素由第二所述应用程序提供。 4. 如权利要求 3 所述的系统, 其中所述一个或多个模块被配置成 : 确定第一所述元素在被再现时是否会被第二所述元素遮挡 ; 并且 响应于第一所述元素会被遮挡的确定, 跳过第一所述元素的再现。 5. 如权利要求 3 所述的系统, 其中所述一个或多个模块被配置成 : 确定第一所述元素在被再现时是否会共享显示设备上与第二所述元。
5、素相同位置 ; 并且 响应于所述确定, 应用一个或多个视觉效果以创建这样的结果 : 使得第一和第二所述 元素在应用所述一个或多个视觉效果之前并且在所述确定之后, 共享所述相同位置而不单 独地再现第一和第二所述元素。 6. 如权利要求 1 所述的系统, 其中所述一个或单个模块进一步被配置成 : 在包括所述 一个或多个模块的计算设备的内核中实现对象数据库模块, 所述对象数据库模块被配置成 将所述数据的至少一部分从所述一个或多个 API 传达至所述合成引擎。 7. 如权利要求 6 所述的系统, 其中所述数据的所述至少一部分描述所述元素的列表的 开始和结束, 并且所述对象数据库模块被配置成响应于从对应。
6、的所述应用程序接收到所述 列表的结束的指示而向所述合成引擎提供所述元素的列表。 8. 如权利要求 6 所述的系统, 其中所述对象数据库模块被配置成跟踪所述元素中的哪 些对应于所述多个应用程序中的哪些进行跟踪。 9. 如权利要求 6 所述的方法, 其中所述对象数据库模块被配置成对所述数据符合用于 由所述合成引擎再现的标准执行验证。 10. 如权利要求 6 所述的系统, 其中所述对象数据库模块被配置成将描述已改变的元 素的所述数据的至少所述部分传达至所述合成引擎, 并且不传达描述未改变的元素的所述 数据的另一部分。 权 利 要 求 书 CN 103562862 A 2 1/11 页 3 全局合成系。
7、统 背景技术 0001 在计算设备上可以再现广泛而多样的元素, 比如图标、 窗口、 动画等等。 另外, 典型 地在计算设备上执行的应用程序的数量像每一个应用程序典型地提供的元素的数量一样 持续增加, 从而提供附加的功能和更丰富的用户体验。 0002 然而, 元素的这种增加可能消耗计算设备的大量资源, 比如处理器、 存储器、 图形 硬件和其它资源。另外, 这种消耗也可能对应用程序本身的执行有影响。 发明内容 0003 描述了一种全局合成系统。在一种或多种实现方式中, 全局合成系统可以被配置 成执行对多个应用程序的再现。例如, 全局合成系统可以被配置成显露出应用程序可访问 的一个或多个应用编程接口。
8、 (API) 。然后 API 可以被用来使得单个合成引擎执行对多个应 用的再现。 单个合成引擎的使用可以被用来通过知道每一个应用程序提供了什么元素以及 这些项目如何与至显示设备的再现相关而执行高效的再现。 0004 本发明内容被提供以按简化的形式介绍将在以下具体实施方式中进一步描述的 概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或必要特征, 也不旨在被 用作确定要求保护的主题的范围的辅助。 附图说明 0005 参照附图描述具体实施方式。在附图中, 附图标记的最左端的 (多个) 数字标识该 附图标记初次出现的图。 在说明书和附图中不同情况下相同附图标记的使用可以表示相似 或相同的项目。
9、。 0006 图 1 是可操作来实现全局合成系统的示例实施方式中的环境的图示。 0007 图 2 示出了一个示例系统, 其中全局合成系统被更详细地图示为包括图 1 的合成 引擎以及用户模式库和对象数据库模块。 0008 图 3 描绘了被配置成全局合成树的图表的示例, 该全局合成树可由合成引擎消耗 以再现元素。 0009 图 4 是描绘示例实施方式中的过程的流程图, 其中生成描述用于由单个合成引擎 再现的元素的图表。 0010 图 5 图示了如包括参照图 1 描述的计算设备的示例系统。 0011 图 6 图示了示例设备的各种组件, 该示例设备可以被实现为如参照图 1、 2 和 5 描 述的、 实。
10、现本文描述的技术的实施例的任何类型的计算设备。 具体实施方式 0012 概述 被计算设备用来再现元素的常规技术采用分布式系统, 在该分布式系统中为每个应用 程序分配对应的合成引擎。因为这一点, 不同的合成引擎不知道其它合成引擎正在执行什 说 明 书 CN 103562862 A 3 2/11 页 4 么。这可能导致可能妨碍实现常规技术的计算设备的效率的冗余、 对元素的不必要再现等 等, 并且因而可能会使这些常规技术不太适合被 “单薄” 计算设备所使用。 0013 本文描述了全局合成技术。在一个或多个窗口中, 单个合成引擎可由多个不同的 应用程序经由一个或多个 API 访问。因而, 可以使合成引。
11、擎 “知道” 各种应用程序正在贡献 什么以及那些元素如何相关。然后可以利用该知识来提高对应用程序的元素的再现的效 率。在一个或多个实现方式中, 合成引擎与属于那些应用程序的线程异步地运行, 这允许 应用程序促使内容在它们的窗口内被制成动画并且使用不同的再现技术对这样的内容进 行栅格化。 此外, 来自系统中的每个应用程序的合成数据可以在单个图表 (例如全局合成树 谱) 中被管理, 这允许合成引擎执行诸如遮挡检测之类的全局优化以及以高效且安全的方 式对来自多个应用程序的内容进行混合和匹配。 结合以下附图可以找出这些和其它技术的 进一步讨论。 0014 在以下讨论中, 首先描述可以采用本文描述的技术。
12、的示例环境。然后描述可以在 示例环境以及其它环境中执行的示例过程。 结果, 示例过程的执行不限于示例环境, 并且示 例环境不限于示例过程的执行。 0015 示例环境 图 1 是可被操作以采用本文描述的技术的示例实现方式中的环境 100 的图示。图示的 环境 100 包括经过网络 106 通信地耦合至 web 服务 104 的计算设备 102。可以以多种方式 配置计算设备 102 以及可以实现 web 服务 104 的计算设备。 0016 例如, 计算设备可以被配置为能够在网络 106 上通信的计算机, 比如台式计算机、 移动站、 娱乐电器、 通信地耦合至显示设备的机顶盒、 无线电话、 游戏控制。
13、台等等。因而, 计 算设备 102 的范围可以是从具有大量存储器和处理器资源的全资源设备 (例如, 个人计算 机、 游戏控制台) 到具有有限存储器和 / 或处理资源的低资源设备 (例如, 传统的机顶盒、 手 持游戏控制台) 。 此外, 尽管示出了单个计算设备102, 但计算设备102可以代表多个不同设 备, 例如商业上用以执行比如 web 服务 104 操作的多个服务器、 遥控器和机顶盒组合、 被配 置成捕获手势的图像捕获设备和游戏控制台等等。 0017 尽管网络 106 被图示为因特网, 但该网络可以采取广泛而多样的配置。例如, 网络 106 可以包括广域网 (WAN) 、 局域网 (LAN。
14、) 、 无线网络、 公共电话网络、 内联网等。另外, 尽管 示出了单个网络 106, 但网络 106 可以被配置成包括多个网络。 0018 计算设备 102 进一步被图示为包括操作系统 108。操作系统 108 被配置成抽取计 算设备 102 的底层功能给可在计算设备 102 上执行的应用 110。例如, 操作系统 108 可以 抽取计算设备102的处理、 记忆、 网络和/或显示功能, 使得应用程序110可以在不知道 “如 何” 实现该底层功能的情况下被写入。应用程序 110 例如可以向操作系统 108 提供数据以 便由显示设备 112 再现和显示, 而不必理解该再现会如何执行。 0019 操。
15、作系统 108 还可以表示多种其它功能, 例如管理文件系统和可由计算设备 102 的用户导航的用户界面。其一个示例被图示为显示在计算设备 102 的显示设备 112 上的桌 面。 0020 操作系统 108 还被图示为包括全局合成系统 114。全局合成系统 114 可以表示这 样的系统 : 该系统包括被配置成允许应用程序 110 使用单个全局合成引擎 116 (以下也简称 为合成引擎 116) 在显示设备 112 上绘制项目的直接合成组件。尽管被图示为操作系统 108 说 明 书 CN 103562862 A 4 3/11 页 5 的一部分, 但全局合成系统 114 可以以多种其它方式来实现,。
16、 例如作为浏览器的一部分、 作 为孤立的模块等等。另外, 全局合成系统 114 可以跨网络 106 分布, 其一个示例被图示为在 web 服务 104 上包括全局合成系统 118。 0021 用户体验 (例如为应用程序110生成的用户界面) 可以包括大量的可以相互交互的 元素, 比如窗口、 动画 (例如文本滚动) 等。例如, 第一窗口可以对应于电子邮件应用程序, 而 第二窗口 122 可以对应于如在显示设备 112 上图示的浏览器。因此, 在任何一个特定的时 间点可以使众多不同的再现组件参与。 另外, 这些不同的元素可以具有不同的刷新率, 比如 伴随有视频和静态文本的 “自动收报机 (tick。
17、er) ” 显示的动画。 0022 全局合成系统 114 可以被用来抽取该功能, 使得不同的应用程序 110 可以卸载该 再现并且因而不知道如何执行再现。例如, 应用程序 110 可以提供描述要再现的元素、 元素 的放置以及元素如何彼此相关的数据。 0023 此外, 全局合成系统 114 可以支持 “独立的” 动画。例如, 应用程序 110 可以传达 动画的声明描述, 其描述了如何再现该动画。例如, 该描述可以描述什么正在被制成动画、 重绘发生的速率、 动画开始的位置、 动画移动的曲线、 动画的结束位置、 动画被再现的时间 量等等。 0024 然后可以由全局合成系统 114 执行该再现并且在无。
18、进一步指令的情况下继续该 再现。以这种方式, 动画的再现不依赖于调用者 (例如, 应用程序 110) , 从而与应用程序 110 的通信的损失、 应用程序 110 的不一致处理等等对动画的再现没有影响。从而, 这可以被用 来通过削减应用程序 110 为再现动画所进行的通信的数量来改进动画的 “平滑度” 和 “流畅 度” 以及计算设备 102(乃至以下进一步描述的网络 106) 的资源。 0025 按照惯例, 由计算设备 102 执行的每一个应用程序 110 与对应的合成引擎交互以 执行用于相应的应用的显示的处理和再现。因此, 常规合成引擎经常 “按进程” 实现。因而, 常规技术可以涉及在任一时。
19、间执行多个不同的合成引擎。 此外, 常规的合成引擎典型地 “不 知道” 由其它的合成引擎所执行的再现。这可能导致计算设备 102 的资源的低效率使用, 比 如绘制窗口, 即使它可能被另一窗口遮挡, 这可能导致处理器、 图形处理器、 存储器和计算 设备 102 的其它资源的不必要的使用。 0026 在一个或多个实现方式中, 全局合成系统 114 遵循全局架构, 使得多个应用程序 110 可以例如经过应用编程接口访问合成引擎 116。例如, 单个合成引擎 116 可以负责整个 桌面和来自当前正在被执行的应用程序 110 的元素。因而, 单个合成引擎 116 可以 “知道” 要再现的用于多个应用程序。
20、的不同元素, 并且相应地做出反应。 0027 继续前一示例, 合成引擎 116 可以知道应用程序的元素 (例如窗口) 将会被再现的 用于另一应用的元素 (例如另一窗口) 遮挡。如图 1 所示, 例如, 应用程序可以具有要在与电 子邮件应用程序对应的窗口 120 后面显示的窗口。以前, 即使应用程序的对应窗口对于计 算设备 102 的用户不可见, 该窗口仍被再现。然而, 合成引擎 116 可以使用本技术来跳过被 遮挡窗口的再现, 从而节约计算设备 102 的资源。 0028 全局合成系统 114 可以被用来提供广泛而多样的功能。如前面所描述的, 全局合 成系统 114 可以执行对要由多个应用程序。
21、再现的事物的全局分析并且高效地确定要绘制 其中的哪些元素, 比如在其中如前面描述的可以跳过元素的再现的遮挡的情况下。 此外, 资 源可以被全局合成系统 114 集中 (pool) 起来, 以便由多个应用程序 110 共享中间存储器, 说 明 书 CN 103562862 A 5 4/11 页 6 而不是如可被常规总和引擎消耗 (既被引擎本身消耗也被由引擎正在绘制的事物消耗) 的 碎片化的存储器。 0029 全局合成系统 114 还可以支持安全技术。例如, 全局合成系统 114 可以被用来绘 制受保护的视频, 比如加密的电影和对应的许可。 对于常规的合成引擎, 应用程序将内容合 成, 然后将内容。
22、传送至对应的合成引擎。这可能导致内容在无保护的情况下 “明文 (in the clear) 传送” (例如, 未压缩的视频帧的传送) , 并且因而内容可能暴露给恶意方。 0030 然而, 在本文描述的一个或多个实现方式中, 内容可以被提供给全局合成系统 114, 并且可以在应用程序 110 不可直接接触的受保护区域内执行该内容。因而, 对合成引 擎 116 不进一步传达内容的信任可以被用来保护该内容。例如, 可以依赖合成引擎来生成 供再现用的像素, 而不将这些像素暴露给由计算设备 102 所执行的应用程序。因而, 该 “单 向流动” 可以帮助确保错误的应用程序 (例如, 来自恶意实体) 不接收。
23、不受保护的内容。 0031 另外, 常规的合成引擎和对应的应用程序 “拥有” 显示设备 112 的屏幕的特定部 分。因此, 一些显示技术难以支持使用这些常规技术。一种这样的技术是对于多个应用程 序的透明性, 因为显示设备 112 的区域可能被一个或另一个常规的合成引擎所拥有, 但不 能被两者都拥有。例如, 显示设备 112 的特定区域可以涉及来自至少两个不同应用程序的 窗口和它们对应的常规合成引擎。 按惯例, 为了支持诸如透明性之类的技术, 将窗口的每个 实例绘制到存储器, 然后将效果应用到资源密集的组合。 0032 然而, 因为全局合成系统 114 可以意识到不同的窗口并且相应地做出反应, 。
24、所以 可以在不事先将窗口单独地绘制到存储器并且然后将视觉效果应用到窗口的情况下, 实现 希望的结果。例如, 全局合成系统 114 可以利用描述要被再现的元素的单个层级树并且由 此 “知道” 元素如何相关。因此, 全局合成系统 114 可以在无需使用常规技术执行的中间步 骤的情况下直接绘制到计算设备 102 的存储器。因此, 这些技术可以被由于存储器和 / 或 处理限制而不能采用常规合成引擎的 “单薄” 计算设备所采用。 0033 此外, 常规的合成引擎一般异步地执行, 以支持不同应用程序的不同再现速率。 尽 管这确实支持了这样的功能 : 由与一个合成相关联的应用程序所指定的再现不影响由另一 应。
25、用所指定的再现, 但这可能导致对计算设备 102 资源的低效率使用。 0034 另外, 分配给不同的常规合成引擎的优先级可能对常规的合成引擎以及相关联的 应用两者都造成错误。例如, 常规的合成引擎可以被给予用于被计算设备 102 的处理器执 行的相对较高的优先级。 然而, 可能发生这样的情况 : 其中合成引擎消耗大量的资源以便支 持多个动画。因此, 合成引擎以及应用程序自身在面临这样的资源密集型任务时可能没有 足够的可用于如预期那样执行的资源。 0035 在一个或多个实现方式中, 合成引擎 116 可以被分配高优先级, 例如, 相对于分配 给由计算设备102执行的其它线程的优先级, 可以将高线。
26、程优先级分配给合成引擎116。 全 局合成系统 114 然后可以对来自不同源的元素如何被合成引擎 116 再现的优先级进行管 理, 其被合成引擎 116 再现被给予高优先级以确保再现发生。例如, 全局合成系统 114 可以 管理哪些元素被更新、 该更新发生的频率 (例如从 60Hz 切换到 30Hz) 等。因此, 全局合成系 统 114 可以帮助提升计算设备 102 的资源针对其它使用的可用性, 所述其他使用比如提供 用于再现的元素的应用程序 110。 0036 图2图示了一个示例系统200, 其中全局合成系统114更详细地图示为包括图1的 说 明 书 CN 103562862 A 6 5/1。
27、1 页 7 合成引擎 116 以及用户模式库 202 和对象数据库模块 204。用户模式库 202 支持多种 API 206、 208, 它们被图示为被相应的应用进程 210、 212 用来与对象数据库模块 204 交互。在该 示例系统 200 中合成引擎 116 被图示为在它自身的进程 214 内执行。 0037 多个分布式的合成引擎的常规使用保护将引擎的执行与计算设备的应用程序彼 此免受彼此之害。 例如, 如果第一应用程序失败, 则耦合至第一应用程序的第一常规合成引 擎可能也失败。 然而, 由于常规合成引擎缺乏彼此的 “知识” , 因而耦合至不同的常规合成引 擎的第二合成引擎被所述失败保护。
28、。 0038 在一个或多个实现方式中, 全局合成系统 114 可以采用技术来保护免受由提供用 于再现的元素的应用程序 110 对合成引擎 116 的状态的腐化。一种这样的技术是采用操作 系统 108 的内核 216 内的合成引擎 116。因此, 合成引擎 116 可以 “信任” 也在内核 216 中 执行的其它组件。 0039 以这种方式, 全局合成系统114可以采用用户模式218与内核模式220之间的 “信 任边界” , 以使得由内核执行检查。在一个或多个实现方式中, 可以依赖应用程序确定由诸 如参数检查之类的应用程序提供的 “正确性” , 以提高由全局合成系统 114 所进行的处理的 效率。
29、。 0040 另一种这样的技术涉及跟踪, 以使得全局合成系统 114“知道” 哪些数据 (例如用 于再现的元素) 属于哪个应用程序。因此, 一个应用程序的失败 (例如崩溃) 不影响另一应 用程序的元素。另外, 全局合成系统 114 在这种失败的情况下可以 “清理” 元素, 例如在预 定量的时间后从正在被再现的元素中移除这些元素。以这种方式, 全局合成系统 114 可以 允许应用程序优雅地失败并且不影响其它应用程序和对应的元素再现。 0041 如图示, 在专用系统进程 214 上执行合成引擎 116, 该专用系统进程 214 不同于诸 如计算设备 102 的其它应用进程 210、 212 之类的。
30、用来执行其它代码的进程。此外, 该进程 214 可以被分配高级别的信任和优先级。进程 214 例如从得到合成数据的观点来看可以 被信任, 并且因而可以用于受保护的数据, 比如受保护的视频、 以权限管理保护的电子邮件 等。 0042 如图 2 所示, 全局合成系统 114 可以使用 3 个部分来实现。第一部分被图示为合 成引擎 116, 其代表执行再现 (即 “进行绘制” ) 到显示设备 112 的功能。第二部分被图示为 用户模式库202, 其代表应用程序通过显露应用编程接口 (API) 206、 208调用的实体。 例如, 用户模式库 202 可以充当比如通过使用动态链接库 (DLL) 从应用。
31、程序接收合成数据的 “信 箱投递口” 。 0043 第三部分被图示为对象数据库模块204, 其被图示为驻留在内核216中。 对象数据 库模块 204 代表负责在用户模式库 202 与合成引擎 116 之间移动数据的功能。 0044 对象数据库模块 204 还可以执行验证。例如, 应用程序可以调用用户模式库 202 以创建诸如位图之类的元素。如果所请求的元素不符合由对象数据库模块 204 所施行的标 准 (例如, 少于 “N” 个像素) , 则对象数据库模块 204 可以向调用用户模式库 202 的应用程序 返回失败消息。因此, 对象数据库模块 204 可以在内核 216 内操作以控制提供给合成。
32、引擎 116 什么。对象数据库模块 204 可以施行多种其它策略。 0045 因此, 合成引擎116可以依赖由对象数据库模块204提供的、 符合对象数据库模块 204实现的策略的数据。 换句话说, 合成引擎可以假设数据是有效的和正确的并且因此适合 说 明 书 CN 103562862 A 7 6/11 页 8 于再现。因此, 可以由对象数据库模块 204 执行单次验证, 然后由合成引擎 116 利用该验证 来执行再现而不需要进一步验证。 0046 对象数据库模块 204 还可以代表这样的功能 : 向合成引擎 116 通知要被再现的数 据何时已改变。例如, 经由用户模式库实现的 API 可以被配。
33、置成消耗描述要再现什么的图 表, 在图 3 中示出了其一个示例。图表 300 可以包括要再现的元素的列表以及在显示设备 112 的何处再现元素的描述, 其可以包括元素在动画的情况下如何移动。 0047 此外, 可以使用子元素来形成要再现的元素, 并且因而图表 300 可以采取层级结 构。另外, 图表 300 可以描述元素如何被再现, 例如, 绘制文本一次、 再现动画等等。因而, 图表 300 可以描述元素以及元素如何彼此相关。 0048 图表 300 表示可以被合成引擎 116 用来再现场景的两个对象集合、 被合成在一起 的位图以及限定合成那些位图所依据的空间关系的视觉件 (visual) 。。
34、在该模型中, 位图是 合成引擎 116 的 “什么” 而视觉件是合成引擎 116 的 “如何” 。那些对象被布置在树结构中 并且被绑定至最顶级别或子窗口以供合成。在该图中, 子视觉件 4 也被图示为指向 DX 位 图。这描述了合成系统的允许开发者对于多个 UI 元素使用相同的内容的功能, 这可以帮助 节省计算设备 102 的资源, 例如存储器。 0049 再次返回图 2, 一旦被合成引擎 116 接收, 应用程序不需要进一步调用合成引擎 116 以保持再现元素。因而, 合成引擎 116 与常规技术相比可以节省资源, 所述常规技术可 能涉及每秒进行 60 次调用以便以显示设备 112 的刷新率来。
35、再现动画的应用程序。因而, 应 用程序 110 可以调用用户模式库 202 的 API 以构建结构, 并且调用 API 以构建要由合成引 擎再现的元素。 0050 为了对由合成引擎 116 再现的内容进行改变, 应用程序可以调用用户模式库 202 的另一应用编程接口以更新结构和 / 或元素。例如, 应用程序可以经由更新 API 来提供数 据, 以提供要用于股票自动收报机动画的信息。 0051 在一个或多个实现方式中, 还可以利用批处理技术来限定要使用帧再现哪些元 素。如前面所描述的, 全局合成系统 114 可以接收多种不同元素以用于以多种不同速率再 现。相应地, 全局合成系统 114 可以支持。
36、这样的结构 : 其中形成要被一起再现的元素的列 表。因此, 全局合成系统 114 可以实现用于元素的开始和结束的定义, 其中在开始和结束之 间接收到的元素直到接收到 “结束” 才被再现。因而, 该帧可以支持一种 “全有或全无” 的 办法再现用于特定帧的元素, 并且确保元素当希望时被一起再现以供显示。 0052 例如, 对象数据库模块 204 可以跟踪应用程序的两个不同状态。第一状态可以引 用用于当前显示的元素。第二状态可以引用要在第一状态之后显示并且被改变的元素。因 而, 第二状态可以被用来建立用于由合成引擎 116 再现的元素的列表, 一旦列表完成 (例 如, 一旦从应用程序接收到列表完成的。
37、指示) 则进行该再现。 0053 一旦完成, 则可以将改变发送至合成引擎 116。另外, 从应用程序接收到列表完成 的指示的定时可以被用来确定何时显示那些改变, 例如哪一帧。因此, 合成引擎 116 可以接 收在一个或多个已完成的列表中描述的一批改变, 但是未被指示为完成的列表不被传达。 该批处理于是可以定义由合成引擎 116 再现的帧。另外, 这可以帮助限制如使用不支持这 样的定义的常规技术可能发生的错误的视觉伪像的显示。应当显而易见, 按需要可以将与 帧对应的时间量设定用于多种不同的量。 说 明 书 CN 103562862 A 8 7/11 页 9 0054 因而, 对象数据库模块 20。
38、4 可以记住先前由合成引擎 116 再现了什么 (例如, 元素 和那些元素的属性) , 并且知道将要再现什么。因此, 对象数据库模块 204 通过比较该信息 来确定哪些元素被改变。相应地, 对象数据库模块 204 可以向合成引擎 116 传达描述该改 变的信息, 而不传达未被改变的信息。 0055 此外, 帧的使用可以进一步提高效率。 例如, 应用程序可以传达描述对象要被移动 某一距离并且返回原始位置的数据。对象数据库模块 204 可以确定该移动要在单个帧的时 间段内发生。相应地, 对象数据库模块 204 可以抑制将该数据传达至合成引擎 116 并相反 地使对象保留在其先前状态。例如, 该移动。
39、可以在用来刷新显示设备 112 的时间段内发生, 并且因而不管怎样都不会被用户看到。 0056 以这种方式, 对象数据库模块 204 可以丢弃要提供给合成引擎 116 用于再现的列 表的构建中的中间状态。然后, 该列表可以以多种方式被传达, 比如由合成引擎 116 执行以 实施改变的命令阵列。另外, 该技术还可以被用来解决由应用程序发送的未绑定数据的情 况, 因为单个情况被报告给合成引擎。 0057 对象数据库模块 204 和合成引擎 116 还可以采用描述改变被实现的确认技术。例 如, 合成引擎 116 可以从对象数据库模块 204 接收描述要做出的改变的通信。当正在做出 改变时, 对象数据。
40、库模块 204 可以等待发送附加改变, 直到接收到做出了先前的改变的确 认为止。一旦对象数据库模块 204 接收到确认, 则附加改变可以被传达至合成引擎。 0058 另外, 该技术可以被用来提供 “节流” 并且因此进一步节省计算设备 102 的资源。 例如, 应用程序可以做出若干错过显示设备刷新速率的请求。通过使用帧并且对改变进行 批处理, 减少了否则将被消耗的资源的量。 0059 通过调用用户模式库202的API对要显示什么做出改变的应用程序可以被多线程 化。相应地, 在一个或多个实现方式中, 对象数据库模块 204 可以采用技术以使得来自单个 应用程序的多个线程的多个调用不使状态恶化。 这。
41、可以通过应用程序自身将其线程锁定在 一起来执行, 例如一个线程可以被阻塞, 同时应用程序的另一线程完成任务。 0060 然后可以将来自多个线程的改变存储在可以由操作系统 108 管理的队列中, 例如 通过可以用于变量的联锁访问, 以使得不同的线程可以在做出 “完整” 改变后再将控制转交 给另一线程。这可以支持以上描述的帧技术以便到达要被合成引擎处理的工作的原子单 元。 此外, 对于未接收到更新的帧, 可以暂停合成引擎的执行, 直到下一帧为止, 从而进一步 节省计算设备 102 的资源。 0061 内核 216 还可以结合全局合成系统 114 来添加多种功能。例如, 当应用程序失败 (例如崩溃)。
42、 时, 内核 216 可以向合成引擎 116 通知该发生。合成引擎 116 然后可以执行与 在应用程序通过正常的退出过程 “自然地” 停止执行的情况下将会使用的那些技术类似的 技术。以这种方式, 合成引擎 116 可以到达 “清理” 状态以使得与应用程序对应的元素被从 计算设备 102 的显示设备 112 上的显示中移除。因此, 这促进了合成引擎 116 的执行中的 鲁棒性。 0062 合成引擎 116 的执行也可以通过实施用于用户模式库 202 的只写 API 来保护安 全。以这种方式, 合成引擎 116 可以生成像素, 但却不将那些像素向回暴露给应用程序, 从 而保护图像不受恶意方侵害。 。
43、0063 如前面所描述的, 这些技术的实现方式还可以涉及计算设备 102“之外” 的设备, 说 明 书 CN 103562862 A 9 8/11 页 10 它们可以跨诸如 web 服务 104 之类的一个或多个实体分布。例如, 这些技术可以被采用来 通过元素和属性的分批 (诸如图 3 的图表 300 之类的合成树) 经由网络 106 的通信来支持终 端服务、 远程桌面环境等。因此, 可以在别处生成图表 300 (例如, 通过在 web 服务 104 上实 现用户模式库 202 和 / 或对象数据库模块 204) 并且由合成引擎 116 通过计算设备 102 的 执行来传送用于再现的合成树。以。
44、这种方式, 即使在网络 106 不可靠的情况下也可以平滑 地显示动画。结合下列过程可以找到这些和其它技术的进一步讨论。 0064 全局合成系统 114 还可以被配置成利用可从硬件 (例如, 图形卡) 获得的功能来执 行操作, 这意味着可以使操作更快并且展现出更好的性能。 其示例包括图形处理单元 (GPU) 的使用以通过混合两个重叠的半透明窗口、 绘制几何修剪 (圆角) 等向合成元素 (例如, UI 块、 整个窗口) 添加透明度。当硬件 (例如, GPU) 不可用时, 全局合成系统 114 仍可以通过 “落回” 软件再现来执行这些操作。 0065 总体上, 本文描述的任何功能都可以使用软件、 固。
45、件、 硬件 (例如固定逻辑电路) 或 这些实现方式的组合来实现。本文使用的术语 “模块” 、“功能” 和 “引擎” 总体上表示软件、 固件、 硬件或其组合。 在软件实现方式的情况下, 模块、 功能或引擎表示当在处理器 (例如一 个或多个 CPU) 上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算 机可读存储器设备中。以下描述的技术的特征是平台无关的, 意指这些技术可以在具有多 种处理器的多种商业计算平台上实现。 0066 例如, 计算设备102还可以包括促使计算设备102的硬件执行操作的实体 (例如软 件) , 例如处理器、 功能块等。例如, 计算设备 102 可以包括计算机可。
46、读介质, 该计算机可读 介质可以被配置成保持促使计算设备 (且更特别地是计算设备 102 的硬件) 执行操作的指 令。 因此, 这些指令起作用来配置硬件以执行操作, 并且以这种方式导致硬件的变换以执行 功能。这些指令可以由计算机可读介质通过多种不同的配置提供给计算设备 102。 0067 计算机可读介质的一种这样的配置是信号承载介质, 并且因而被配置成将指令 (例如作为载波) 比如经由网络传输至计算设备的硬件。计算机可读介质还可以被配置为计 算机可读存储介质, 并且因而不是信号承载介质。计算机可读存储介质的示例包括随机存 取存储器 (RAM) 、 只读存储器 (ROM) 、 光盘、 闪存、 硬。
47、盘存储器和其它可以使用磁、 光和其它 技术存储指令和其它数据的存储器设备。 0068 示例过程 下面的讨论描述可以利用先前描述的系统和设备实现的全局合成系统技术。 每一过程 的各方面可以在硬件、 固件、 软件或其组合中实现。 这些过程被示出为指定由一个或多个设 备执行的操作的块的集合, 并且不一定限于图示的按各块执行操作的次序。在以下讨论的 部分中, 将参照图 1 的环境 100、 图 2 的系统 200 和图 3 的图表 300。 0069 图 4 描绘了示例实现方式中的过程 400, 其中生成描述用于由单个合成引擎再现 的元素的图表。 生成描述已被指定用于由一个或多个计算设备执行的多个应用。
48、再现的元素 的图表 (块402) 。 如图3所示, 图表300可以包括要再现的元素的列表以及关于在显示设备 112 上的何处再现元素的描述, 它可以包括在动画的情况下元素如何移动。此外, 可以使用 子元素来形成要再现的元素, 并且因而图表 300 可以采取层级结构。另外, 图表 300 可以描 述元素如何被再现。因而图表 300 可以描述元素以及元素如何彼此相关。多种其它图表也 被考虑。 说 明 书 CN 103562862 A 10 9/11 页 11 0070 该图表被传达以由单个合成引擎接收, 以使得元素被再现 (块404) 。 这可以以多种 方式执行。例如, 图表可以从 web 服务经。
49、由网络传达以由执行单个合成引擎的计算设备接 收 (块 406) , 例如从 web 服务 104 的全局合成系统 118 经由网络 106 到计算设备 102 的合成 引擎 116。在另一示例中, 图表可以从对象数据库模块传达至单个合成引擎 (块 408) 。对象 数据库模块 204 例如可以基于从多个应用程序接收的数据生成图表, 并且将图表传达至合 成引擎以引用被更新的元素。多种其它示例也被考虑。 0071 示例系统和设备 图 5 图示了包括如参照图 1 描述的计算设备 102 的示例系统 500。示例系统 500 当在 个人计算机 (PC) 、 电视设备和 / 或移动设备上运行应用程序时实现用于无缝用户体验的普 适环境。 服务和应用程序当在利用应用程序、 播放视频游戏、 观看视频等等的同时从一个设 备转换到下一个设备时, 对于普通用户体验在全部三种环境中基本相似地运行。在图示的 情况中, 计算设备 102 被图示为实现以上描述的全局合成系统 114 的至少一部分。 0072 在示例系统 500 。