fix

Junkui Zhang created

Change summary

crates/gpui/src/platform/windows/directx_atlas.rs    | 14 +++++++-------
crates/gpui/src/platform/windows/directx_renderer.rs |  5 +++++
2 files changed, 12 insertions(+), 7 deletions(-)

Detailed changes

crates/gpui/src/platform/windows/directx_atlas.rs 🔗

@@ -35,10 +35,10 @@ struct DirectXAtlasTexture {
 }
 
 impl DirectXAtlas {
-    pub(crate) fn new(device: ID3D11Device, device_context: ID3D11DeviceContext) -> Self {
+    pub(crate) fn new(device: &ID3D11Device, device_context: &ID3D11DeviceContext) -> Self {
         DirectXAtlas(Mutex::new(DirectXAtlasState {
-            device,
-            device_context,
+            device: device.clone(),
+            device_context: device_context.clone(),
             monochrome_textures: Default::default(),
             polychrome_textures: Default::default(),
             tiles_by_key: Default::default(),
@@ -56,12 +56,12 @@ impl DirectXAtlas {
 
     pub(crate) fn handle_device_lost(
         &self,
-        device: ID3D11Device,
-        device_context: ID3D11DeviceContext,
+        device: &ID3D11Device,
+        device_context: &ID3D11DeviceContext,
     ) {
         let mut lock = self.0.lock();
-        lock.device = device;
-        lock.device_context = device_context;
+        lock.device = device.clone();
+        lock.device_context = device_context.clone();
         lock.monochrome_textures = AtlasTextureList::default();
         lock.polychrome_textures = AtlasTextureList::default();
         lock.tiles_by_key.clear();

crates/gpui/src/platform/windows/directx_renderer.rs 🔗

@@ -253,6 +253,11 @@ impl DirectXRenderer {
         {
             self._direct_composition = direct_composition;
         }
+        unsafe {
+            self.devices
+                .device_context
+                .OMSetRenderTargets(Some(&self.resources.render_target_view), None);
+        }
         Ok(())
     }