Skip to content

v2.5.3 - SceneGraph Copy Semantics and Node Hierarchy Fixes

Latest

Choose a tag to compare

@lvcabral lvcabral released this 04 Sep 22:18

This patch release fixes copying an assocarray/array containing a SceneGraph node: the node itself was being cloned rather than carried over, leaving a broken copy whose script scope read back invalid — the fix and its container-copy semantics (dropped uncopyable members, cycle safety, clone() base-type behavior) are verified against a real device across four new probes. A related fix corrects the class hierarchy so every built-in node beyond a direct Group child reports its full isSubtype()/parentSubtype() chain instead of collapsing to "Node", and adds RenderableNode as a documented Group alias. The remaining documented ChannelStore node commands — Roku Pay credential storage and TVOD partner orders — are now mocked, along with several spec deviations in the commands already implemented. The core engine also gains a performance improvement that defers roArray/roAssociativeArray/roList/roRegion/roBitmap's method-surface construction to first use, cutting a representative SceneGraph layout benchmark by 30%. Also fixed: roMessagePort.PeekMessage() left a pending roUrlTransfer async job in the callback queue instead of consuming it, causing the common PeekMessage()+GetMessage() poll idiom to re-fire the same HTTP request and deliver duplicate roUrlEvents forever. Read the full release notes below for more details.

Release Changes

Core Engine

  • (brs) Build expensive component method surfaces (roArray, roAssociativeArray, roList, roRegion, roBitmap) lazily, improving SceneGraph layout performance by up to 30% by @lvcabral in #1208
  • (draw2d) Simplified IfDraw2D.ts and added dedicated unit tests by @lvcabral in #1212
  • (brs) Fixed roMessagePort.PeekMessage() not consuming a pending roUrlTransfer callback, which caused duplicate HTTP requests and repeated roUrlEvent delivery in the PeekMessage()+GetMessage() poll idiom by @lvcabral in #1215

SceneGraph Extension (brs-scenegraph release v0.5.3)

  • (rsg) Mocked the remaining documented ChannelStore node commands (Roku Pay credential storage and TVOD partner orders) and fixed spec deviations in existing ones by @lvcabral in #1205
  • (rsg) Aligned container and node copy semantics with the device, so copying an assocarray/array no longer clones a SceneGraph node inside it by @lvcabral in #1207
  • (rsg) Added RenderableNode as an alias for Group and fixed multi-level subtype hierarchy registration by @lvcabral in #1210

Chores, Build and Dependencies

  • build(deps): bump fflate from 0.8.2 to 0.8.3 by @dependabot in #1211
  • Upgraded dependencies

Full Changelog: v2.5.2...v2.5.3