Skip to content

feat: Add opt-in native secondary-screen rendering - #35

Open
marcbennasarp wants to merge 2 commits into
ROCKNIX:masterfrom
marcbennasarp:master
Open

marcbennasarp wants to merge 2 commits into
ROCKNIX:masterfrom
marcbennasarp:master

Conversation

@marcbennasarp

Copy link
Copy Markdown

Title: Add opt-in native dual-screen support

Why

Dual-screen themes currently rely on oversized windows, dummy outputs and layout offsets to spread content across both displays. These workarounds can break other UI elements, including menus, popups and the left sidebar, because they use the oversized window’s dimensions.

This change gives each screen its own native window so themes can place content on either display without those workarounds.

Changes

  • Add secondary-window rendering through the GLES3 backend.
  • Support screen="secondary" theme views.
  • Keep system and game selection synchronized across both screens.
  • Document configuration, theme usage and current limitations.

The feature is optional and disabled by default. Existing users retain single-window behavior unless they explicitly enable it through the display environment variables.

A compatible Thor theme will be published on the thor-native-screens branch of marcbennasarp/canvas-ds.

Validation

Manually tested the native preview on AYN Thor running ROCKNIX 20260901: screen layouts, controller navigation, game lists, menus, and game launch/return. The contribution also builds on the updated upstream base; that rebuilt version has not yet been retested on the device.

Limitations

This is experimental. Menus remain on the primary screen, and secondary touch is ignored. Hotplug, screensavers and video/resource lifecycle need further work. True suspend and other devices, including RG DS, have not been tested.

Support separate SDL windows with shared navigation and secondary theme views through the GLES3 renderer.

Keep single-window behavior by default. Document experimental Thor support, manual validation, and remaining limitations.
@marcbennasarp

marcbennasarp commented Sep 11, 2026

Copy link
Copy Markdown
Author

the screensaver doesn't seem to turn off the lower screen, I'll try to fix that tomorrow

Blank the secondary window and stop its theme components while the screensaver is active. Rebuild the selected view on dismissal.

Tested idle timeout, manual activation, and restored navigation on AYN Thor.
@marcbennasarp

Copy link
Copy Markdown
Author

fixed on 11537bf

@spycat88

Copy link
Copy Markdown
Contributor

Can you send this to https://github.com/batocera-linux/batocera-emulationstation, if they don't merge it then we will.

@marcbennasarp

Copy link
Copy Markdown
Author

sure, it's done at batocera-linux/batocera-emulationstation#2215

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants