Skip to content

Instantly share code, notes, and snippets.

@loic-sharma
Last active September 19, 2022 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loic-sharma/1a111bb9e4de7294cc07a38289cb71c6 to your computer and use it in GitHub Desktop.
Save loic-sharma/1a111bb9e4de7294cc07a38289cb71c6 to your computer and use it in GitHub Desktop.
ANGLE fix for unbalanced COM closing
diff --git a/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp b/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
index a2b190f38..bac68d5d0 100644
--- a/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
+++ b/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
@@ -305,8 +305,13 @@ RoHelper::RoHelper()
auto result = RoInitialize(RO_INIT_MULTITHREADED);
- if (SUCCEEDED(result) || result == S_FALSE || result == RPC_E_CHANGED_MODE)
+ if (SUCCEEDED(result) || result == RPC_E_CHANGED_MODE)
{
mWinRtAvailable = true;
+
+ if (SUCCEEDED(result))
+ {
+ mWinRtInitialized = true;
+ }
}
#endif
@@ -315,7 +320,7 @@ RoHelper::RoHelper()
RoHelper::~RoHelper()
{
#ifndef ANGLE_ENABLE_WINDOWS_UWP
- if (mWinRtAvailable)
+ if (mWinRtInitialized)
{
RoUninitialize();
}
diff --git a/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h b/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h
index aebdba1a5..82857322e 100644
--- a/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h
+++ b/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h
@@ -67,6 +67,7 @@ class RoHelper
RoUninitialize_ *mFpRoUninitialize;
bool mWinRtAvailable;
+ bool mWinRtInitialized;
HMODULE mComBaseModule;
HMODULE mCoreMessagingModule;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment