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