Repository navigation
fix(capture): liquid glass self-capture, fallback spectrum, and Windows 10 support - #248
Merged
Merged
Conversation
DWM can drop a window's magnifier exclusion when the window is hidden and shown again or when the magnifier resizes, so the backdrop sometimes showed the island's own glass. Re-send the exclusion list whenever the window set or visibility changes, after every resize, and every 500 ms, and warn once when the call starts failing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fallback spectrum opened the virtual default output, which cpal activates asynchronously; after an output switch that kept failing with RPC_E_CHANGED_MODE and logged an error every second. Resolve the default to its concrete endpoint, which activates synchronously, and log the device change and missing-config warning only once per device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mage callback On Windows 10, SetWindowDisplayAffinity rejects the DirectComposition island windows (0x80070008) and Windows.Graphics.Capture cannot capture the cloaked magnifier host (0x80070057), so liquid glass had no backdrop in either mode. - When capture exclusion fails, normal mode falls back to the magnifier instead of failing. - When the magnifier host cannot be captured, the magnifier runs from a hidden, uncloaked host and delivers frames through MagSetImageScalingCallback. Frames are copied into BGRA buffers, uploaded to a D3D11 texture, and fed into the existing copy path. The rate is capped at 60 Hz and identical frames are skipped. - The callback validates the image header against the buffer size, and the source rect is clamped to the island's monitor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pre-submission checklist
CONTRIBUTING.mdand completed the required checksChange type (select one)
featNew featurefixBug fixdocsDocumentation or templatesstyleFormatting with no behavior changerefactorCode change that neither fixes a bug nor adds a featureperfPerformance improvementtestTest-related changechoreBuild, CI, dependency, or tooling changerevertRevertsecuritySecurity fixScope (select all that apply)
Other: Windows capture backend (
winisland-platform-windowsliquid glass backdrop). No new dependencies or crate features.Related issues
Description
Summary
Fixes liquid glass sometimes showing its own texture in compatibility mode, stops the fallback spectrum from failing after an output switch, and makes liquid glass work on Windows 10.
Motivation and context
RPC_E_CHANGED_MODEevery second. cpal activates the virtual default output asynchronously, and that activation keeps failing after a switch.SetWindowDisplayAffinity(WDA_EXCLUDEFROMCAPTURE)fails for the DirectComposition island windows with0x80070008.0x80070057).Changes
Commits are self-contained and build in order.
fix(capture): the magnifier re-sends its exclusion list when the window set or visibility changes, after every resize, and every 500 ms. It warns once whenMagSetWindowFilterListstarts failing.fix(audio): the fallback capture resolves the default output to its concrete endpoint, which activates synchronously. The device-change and missing-config logs are emitted once per device.feat(capture):MagSetImageScalingCallback.Testing
cargo fmt --all -- --checkandcargo clippy --workspace -- -D warningspass. The first commit also passescargo checkon its own.RPC_E_CHANGED_MODE.UI changes
None beyond liquid glass now rendering on Windows 10.
Known limitation on Windows 10: the island stays visible in screenshots, because exclusion is unavailable there.
🤖 Generated with Claude Code