fix window resize exception
This commit is contained in:
parent
3b5a85542d
commit
1cef30e7f5
|
|
@ -193,11 +193,11 @@ WindowWin32Impl::WindowWin32Impl()
|
|||
key_map_['A' + i] = KeyCode(size_t(KeyCode::A) + i);
|
||||
|
||||
// Num 0 - 9
|
||||
for (size_t i = 0; i < 9; ++i)
|
||||
for (size_t i = 0; i < 10; ++i)
|
||||
key_map_['0' + i] = KeyCode(size_t(KeyCode::Num0) + i);
|
||||
|
||||
// Numpad 0 - 9
|
||||
for (size_t i = 0; i < 9; ++i)
|
||||
for (size_t i = 0; i < 10; ++i)
|
||||
key_map_[VK_NUMPAD0 + i] = KeyCode(size_t(KeyCode::Numpad0) + i);
|
||||
|
||||
// F1 - F12
|
||||
|
|
|
|||
|
|
@ -69,6 +69,8 @@ public:
|
|||
|
||||
void DiscardResources() override;
|
||||
|
||||
void SetTargetBitmap(_In_ ComPtr<ID2D1Bitmap1> target) override;
|
||||
|
||||
public:
|
||||
unsigned long STDMETHODCALLTYPE AddRef();
|
||||
|
||||
|
|
@ -276,8 +278,7 @@ HRESULT D2DDeviceResources::CreateWindowSizeDependentResources()
|
|||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
target_bitmap_ = target;
|
||||
device_context_->SetTarget(target_bitmap_.Get());
|
||||
SetTargetBitmap(target);
|
||||
}
|
||||
}
|
||||
return hr;
|
||||
|
|
@ -311,6 +312,15 @@ HRESULT D2DDeviceResources::HandleDeviceLost(_In_ ComPtr<IDXGIDevice> dxgi_devic
|
|||
return hr;
|
||||
}
|
||||
|
||||
void D2DDeviceResources::SetTargetBitmap(ComPtr<ID2D1Bitmap1> target)
|
||||
{
|
||||
target_bitmap_ = target;
|
||||
if (device_context_)
|
||||
{
|
||||
device_context_->SetTarget(target_bitmap_.Get());
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT D2DDeviceResources::CreateBitmapConverter(_Out_ ComPtr<IWICFormatConverter>& converter,
|
||||
_In_opt_ ComPtr<IWICBitmapSource> source,
|
||||
_In_ REFWICPixelFormatGUID format, WICBitmapDitherType dither,
|
||||
|
|
|
|||
|
|
@ -63,6 +63,8 @@ public:
|
|||
|
||||
virtual void DiscardResources() = 0;
|
||||
|
||||
virtual void SetTargetBitmap(_In_ ComPtr<ID2D1Bitmap1> target) = 0;
|
||||
|
||||
inline ID2D1Factory1* GetFactory()
|
||||
{
|
||||
KGE_ASSERT(factory_);
|
||||
|
|
|
|||
|
|
@ -954,6 +954,12 @@ void RendererImpl::Resize(uint32_t width, uint32_t height)
|
|||
if (!d3d_res_)
|
||||
hr = E_UNEXPECTED;
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// Clear resources
|
||||
d2d_res_->SetTargetBitmap(nullptr);
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
output_size_.x = static_cast<float>(width);
|
||||
|
|
|
|||
Loading…
Reference in New Issue