Skip to content

feat: EXR performance, hotkey editor, viewport fixes#229

Open
throb wants to merge 4 commits intoAcademySoftwareFoundation:mainfrom
throb:feat/exr-perf-hotkey-viewport
Open

feat: EXR performance, hotkey editor, viewport fixes#229
throb wants to merge 4 commits intoAcademySoftwareFoundation:mainfrom
throb:feat/exr-perf-hotkey-viewport

Conversation

@throb
Copy link

@throb throb commented Mar 14, 2026

Summary

  • EXR Performance: Concurrent precache (4 in-flight frames), configurable decompression threads (default 16), off-by-one resolution fix
  • EXR Display Window: Default overscan changed from 100% to 0% (crops data window to display window), fixed offset display window math
  • Hotkey Editor: Full interactive editor replacing read-only viewer (Help > Hotkeys) with click-to-capture rebinding, amber conflict warnings, persistent overrides, search filtering
  • Viewport Fixes: SSBO shader out-of-bounds changed from colored debug to black, FBO texture wrap uses GL_CLAMP_TO_BORDER with black border
  • Build: Version bumped to 1.1.2, EXR benchmark tool added

Changed Files (18 files, +1728/-68)

  • bench/exr_benchmark/ — standalone EXR decompression benchmark tool
  • src/plugin/media_reader/openexr/ — concurrent precache, configurable thread count, overscan fix
  • src/media_reader/ — frame request queue supports multiple in-flight requests
  • src/ui/qml/viewport/src/hotkey_ui.cpp — interactive hotkey editor backend
  • ui/qml/xstudio/widgets/dialogs/hotkeys/ — hotkey editor QML UI + delegate
  • src/ui/opengl/src/shader_program_base.cpp — SSBO debug color fix
  • src/ui/qt/viewport_widget/ — FBO texture border fix
  • share/preference/plugin_media_reader_openexr.json — new EXR preferences

Test plan

  • Open multi-layer EXR sequence, verify playback performance improvement
  • Check EXR with offset display window renders correctly at 0% overscan
  • Open Help > Hotkeys, rebind a key, verify persistence after restart
  • Verify viewport shows black (not colored) for out-of-bounds pixels
  • Run bench/exr_benchmark against a test EXR sequence

🤖 Generated with Claude Code

throb and others added 4 commits March 10, 2026 16:56
…e loading

Three issues prevented image sequences (EXR, etc.) from loading on Windows:

1. Broken backslash regex in scan_posix_path() - the character class [\]
   matched ']' instead of '\', leaving backslashes in scanned file paths.
2. pad_size() returned 0 for non-zero-padded frame numbers (e.g. "1000"),
   producing invalid %00d / {:00d} format specifiers that failed extension
   matching in is_file_supported().
3. posix_path_to_uri() did not normalise backslashes to forward slashes on
   Windows, leaking them into file: URIs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add --review / -v CLI flag to launch xstudio in "Present" layout
(viewport only, no playlists or timeline). This overrides saved user
layout preferences on startup.

Also add drag-drop handling to the viewport panel so files can be
dropped directly onto the viewer in any layout. Previously drops were
only handled by the media list panel, which doesn't exist in the
Present layout.

Bump version to 1.1.1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove Gamma and Saturation from the default hidden toolbar items so
they are visible by default in the viewport toolbar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
EXR Performance:
- Dispatch up to 4 concurrent precache requests in do_precache()
- Add configurable EXR decompression thread count preference (default 16)
- Fix off-by-one in EXR resolution reporting (max-min → max-min+1)
- Crop data window to display window by default (0% overscan)
- Add standalone EXR benchmark tool

Hotkey Editor:
- Replace read-only hotkey viewer with full interactive editor
- Click-to-capture key rebinding with conflict detection and warnings
- Persistent hotkey overrides saved to %LOCALAPPDATA%/xstudio/
- Search filtering, per-key and reset-all functionality
- Scrollbar for overflow content

Viewport Fixes:
- Fix SSBO shader debug colors (red/blue → black) for out-of-bounds pixels
- Fix FBO texture wrap mode (GL_CLAMP_TO_EDGE → GL_CLAMP_TO_BORDER)
- Fix overscan display: crop EXR data window to display window by default

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant