Handle device-lost for text in DrawingIslands sample. #351
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.
Description
This enables the text rendering in the
DrawingIslands
sample to properly recover when the D3D device is lost.The
DeviceLostHelper
class listens for device-lost events on the specified DXGI device. This code is adapted from https://learn.microsoft.com/en-us/windows/uwp/composition/composition-native-interop.The
DrawingIsland
class now includes an instance ofDeviceLostHelper
and uses it to listen for events on the device associated with theTextRenderer
object. On device lost, theDrawingIsland::OnDirect3DDeviceLost
method is called and does the following:TextRenderer
to recreate its deviceThe
TextRenderer
class has new code to recreate its device. It also catches and ignores the exception in the unlikely event that a DXGI_ERROR_DEVICE_REMOVED error occurs duringTextRenderer::Render
.I tested this by triggering multiple device losses using
dxcap -forceTDR
.