Add out-of-process screenshot capturing on Windows#1325
Conversation
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog. Bug Fixes 🐛
Internal Changes 🔧
Other
🤖 This preview updates automatically when you update the PR. |
Instructions and example for changelogPlease add an entry to Example: ## Unreleased
### Features
- Add out-of-process screenshot capturing on Windows ([#1325](https://github.com/getsentry/sentry-unreal/pull/1325))If none of the above apply, you can opt out of this check by adding |
| UPROPERTY(Config, EditAnywhere, Category = "General|Native", | ||
| Meta = (DisplayName = "Out-of-process screenshot capturing (Experimental)", ToolTip = "Flag indicating whether crash screenshots should be captured out-of-process by the native SDK using OS-level APIs instead of Unreal's Slate renderer. More reliable during crashes since it doesn't depend on the rendering pipeline being functional. Currently supported on Windows only. Requires `Attach screenshots` to be enabled.", | ||
| EditCondition = "AttachScreenshot")) | ||
| bool UseNativeScreenshotCapturing; | ||
|
|
There was a problem hiding this comment.
I think we should either bundle "screenshot capture" into one option/flag, or if this is split into two because it is experimental, have experimental in the name. Either that or there should be a hierarchy to them. The user opts into screenshot capture, and then also opts into capturing them out-of-process.
Documenting and explaining this here and on other platforms is going to be really hard because when is what captured by who? In which error case is what option going to kick in?
There was a problem hiding this comment.
Either that or there should be a hierarchy to them. The user opts into screenshot capture, and then also opts into capturing them out-of-process
That make sense - I'll put this new setting next to AttachScreenshot so it will be easier for users to configure all screenshot-related matters in one place. We can also benefit from covering this in more details docs.
bitsandfoxes
left a comment
There was a problem hiding this comment.
What are the limits to this? Is this going to capture the actual screen? Just the game window? Overlays?


The current in-process Slate-based screenshot capture during crashes might now always work because the rendering pipeline may be in a broken state when the crash occurs. The native SDK's out-of-process approach captures screenshots from a separate process making it significantly more reliable. It also supports fast-fail crashes that bypass SEH (crashpad backend).
Summary
EnableOutOfProcessScreenshotssetting underGeneral|Attachmentsthat delegates crash screenshot capture to sentry-native'ssentry_options_set_attach_screenshotAPIDocumentation