throwing in the simplest fix i can think of while i ponder about what the real fix should be (#4559)
## Summary of the Pull Request The issue seems to be how `SwapChainScaleChanged` gets fired and attempts to tell the renderer to `UpdateDPI` when the renderer is gone. So, as a quick bandaid, we'll put a quick check to only do the thing if the renderer is alive. ## PR Checklist * [x] Closes #4539 * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [x] Tests added/passed ## Validation Steps Performed Held my new tab button for about thirty seconds then held the close tab button until all tabs closed without a crash.
This commit is contained in:
parent
7836da07dd
commit
38ebf48d79
|
@ -1521,12 +1521,15 @@ namespace winrt::Microsoft::Terminal::TerminalControl::implementation
|
|||
void TermControl::_SwapChainScaleChanged(Windows::UI::Xaml::Controls::SwapChainPanel const& sender,
|
||||
Windows::Foundation::IInspectable const& /*args*/)
|
||||
{
|
||||
const auto scale = sender.CompositionScaleX();
|
||||
const auto dpi = (int)(scale * USER_DEFAULT_SCREEN_DPI);
|
||||
if (_renderEngine)
|
||||
{
|
||||
const auto scale = sender.CompositionScaleX();
|
||||
const auto dpi = (int)(scale * USER_DEFAULT_SCREEN_DPI);
|
||||
|
||||
// TODO: MSFT: 21169071 - Shouldn't this all happen through _renderer and trigger the invalidate automatically on DPI change?
|
||||
THROW_IF_FAILED(_renderEngine->UpdateDpi(dpi));
|
||||
_renderer->TriggerRedrawAll();
|
||||
// TODO: MSFT: 21169071 - Shouldn't this all happen through _renderer and trigger the invalidate automatically on DPI change?
|
||||
THROW_IF_FAILED(_renderEngine->UpdateDpi(dpi));
|
||||
_renderer->TriggerRedrawAll();
|
||||
}
|
||||
}
|
||||
|
||||
// Method Description:
|
||||
|
|
Loading…
Reference in a new issue