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